Linux 介绍_8 基础备份加密技术

基础备份技术

我的博客
将以如下几个部分进行讨论:

  • 归档文件
  • 制作备份
  • 加密数据

介绍

虽然 Linux 是一个十分安全的操作系统,即便它被设计来不关机持续运行,数据依然可能丢失。数据丢失有时候是用户的过失,有时候是系统故障 (比如硬盘故障),因此备份重要的数据是十分必要的操作。

准备你的数据

使用 tar 归档

大部分情况下,我们首先会把要备份的数据收集到一个独立的归档文件中,后续要对它进行压缩。在 Linxu 中,通常使用 tar 命令实现,tar 用来归档数据,制作 tarball

tar 有很多选项,最重要的如下:

选项 功能
-v 打印过程信息
-t 测试,查看 tarball 中的文件
-x 提取归档文件
-c 创建归档文件
-f archivedevice 使用 archivedevice 作为 tarball 的源或目的
-j 通过 bzip2 过滤

通常在使用 tar 命令时,不在前面加上 - 前缀。

下面的例子,创建一个归档文件,并把归档的文件解除打包:

gaby:~> ls images/
me+tux.jpg  nimf.jpg

gaby:~> tar cvf images-in-a-dir.tar images/
images/
images/nimf.jpg
images/me+tux.jpg

gaby:~> cd images

gaby:~/images> tar cvf images-without-a-dir.tar *.jpg
me+tux.jpg
nimf.jpg

gaby:~/images> cd
gaby:~> ls */*.tar
images/images-without-a-dir.tar

gaby:~> ls *.tar
images-in-a-dir.tar 

gaby:~> tar xvf images-in-a-dir.tar 
images/
images/nimf.jpg
images/me+tux.jpg

gaby:~> tar tvf images/images-without-dir.tar 
-rw-r--r-- gaby/gaby  42888 1999-06-30 20:52:25 me+tux.jpg
-rw-r--r-- gaby/gaby   7578 2000-01-26 12:58:46 nimf.jpg

gaby:~> tar xvf images/images-without-a-dir.tar 
me+tux.jpg
nimf.jpg

gaby:~> ls *.jpg
me+tux.jpg  nimf.jpg

这个例子分别进行了目录的打包以及一系列文件的打包。强烈建议只打包压缩目录,这样在解包的时候就不会导致到处都是文件了。

使用 gzip/bzip2 进行压缩、解压缩

数据,包括 tarball,可以使用 zip 工具进行压缩,gzip 命令将会添加 suffix.gz 并删除源文件。

Arvin@XDD:~/tardir$ ls -la | grep tar
-rw-rw-r--  1 Arvin Arvin 419840 1月  15 19:23 mtar.tar

Arvin@XDD:~/tardir$ gzip mtar.tar

Arvin@XDD:~/tardir$ ls
mtar.tar.gz

Arvin@XDD:~/tardir$ ls -la mtar.tar.gz
-rw-rw-r-- 1 Arvin Arvin 64588 1月  15 19:23 mtar.tar.gz

使用 -d 选项,解压缩文件:

Arvin@XDD:~/tardir$ gzip -d mtar.tar.gz

Arvin@XDD:~/tardir$ ls -la | grep tar
-rw-rw-r--  1 Arvin Arvin 419840 1月  15 19:23 mtar.tar

bzip2 以类似的方式工作,但是使用了提升后的压缩算法,因此压缩得到的目标文件更小。

Linux 软件包通常以 gzip 压缩过的 tar 包存在。

GNUtar 命令可以应用在 gzip 压缩的文件上,解压文件使用命令:

tar zxvf file.tar.gz

解压使用 bzip2 压缩的 tarball,使用命令:

tar jxvf file.tar.bz2

使用 rsync 进行文件同步

介绍

rsync 程序是进行远程备份的快速灵活的工具。这个命令在 UNIX 及类 UNIX 系统上一般都有,可以以脚本形式进行灵活配置。这里说的 远程 不要以字面去理解他,你的远程设备可能是一个 USB 存储设备或你硬盘上的另一个分区,而不需要是两台互相分离的设备。

例子,同步到 USB 设备

首先挂载 USB 设备:

root@theserver# mkdir /mnt/usbstore

root@theserver# mount -t vfat /dev/sda1 /mnt/usbstore

开始备份,目录 /home/karl 下的内容:

karl@theserver:~> rsync -avz /home/karl/ /mnt/usbstore

加密

一般说明

为什么要加密数据

有时候你会选择将备份的数据放到你不能控制访问用户的位置,比如某个服务器上。有时候,你希望对你邮件的内容加密。

GNU 隐私护卫

Linux 系统上,有 GnuPGGNU 的隐私护卫。

生成密钥

在你加密你的数据之前,你需要首先创建一对密钥。这对密钥包含公钥与私钥。你可以将公钥发送给相关人员,他们可以用这个公钥来为发送给你的数据加密,你在接收到数据之后,通过你的私钥解密。你需要一直私有掌管这个私钥,不与别人分享,否则,其他拿到你的那把私钥的人,可以将发送给你的数据使用这把私钥解密。为防意外发生,使用密码保护这把私钥。密钥对通过如下命令创建:

Arvin@XDD:~$ gpg --generate-key
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: 目录‘/home/Arvin/.gnupg’已创建
gpg: 钥匙箱‘/home/Arvin/.gnupg/pubring.kbx’已创建
注意:使用 “gpg --full-generate-key” 以获得一个功能完整的密钥产生对话框。

GnuPG 需要构建用户标识以辨认您的密钥。

真实姓名: Arvin
电子邮件地址: 6171905030@stu.jiangnan.edu.cn
您选定了此用户标识:
    “Arvin <6171905030@stu.jiangnan.edu.cn>”

依据提示,输入这对密钥的密码,牢记你的密码。

这样密钥对就生成了。

关于密钥

在你的密钥被创建之后,你会得到签名信息。是一串由 40 位十六进制数组成的数码,因为数字很长,因此很难再次生成一样的密钥。你可以确定,这对密钥就是世界上唯一的密钥对,你可以通过如下命令查看密钥信息:

Arvin@XDD:~$ gpg --list-keys
gpg: 正在检查信任度数据库
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: 深度:0  有效性:  1  已签名:  0  信任度:0-,0q,0n,0m,0f,1u
gpg: 下次信任度数据库检查将于 2024-01-15 进行
/home/Arvin/.gnupg/pubring.kbx
------------------------------
pub   rsa3072 2022-01-15 [SC] [有效至:2024-01-15]
      # 本人给删除了密钥信息
uid           [ 绝对 ] Arvin <6171905030@stu.jiangnan.edu.cn>
sub   rsa3072 2022-01-15 [E] [有效至:2024-01-15]

密钥 IDrsa3072,你可以发送你的密钥 ID 以及你的名字到一个密钥服务器,这样其他人可以获取到关于你的这段信息,使用它来加密发送给你的数据。或者,你可以直接将你的公钥发送给你需要发送的人。你的密钥的公钥部分也是一个非常长的数字,可以使用如下命令查看:

gpg --export -a

加密数据

现在,你可以加密一个 .tar 文档或压缩文档了,像如下这样使用 gpg 命令:

gpg -e -r uid 要加密的文档

-e 选项告知 gpg 去做加密动作,-r 选项告知 gpg 为谁加密,需要注意的是,只有 -r 后面跟着的这个用户才能解密数据:

Arvin@XDD:~$ gpg -e -r Arvin pyshtables.py

解密文件

使用 -d 选项,可以解密为你加密的文件。

Arvin@XDD:~/decry$ ls
pyshtables.py.gpg
Arvin@XDD:~/decry$ gpg -d -o test.py pyshtables.py.gpg
gpg: 由 3072 位的 RSA 密钥加密,标识为 略了一些数据,生成于 2022-01-15
      “Arvin <6171905030@stu.jiangnan.edu.cn>”
Arvin@XDD:~/decry$ ls
pyshtables.py.gpg  test.py
posted @ 2022-01-15 20:50  ArvinDu  阅读(109)  评论(0编辑  收藏  举报