Linux备份和恢复


在探索特定于CentOS的部署标准备份计划的方法之前,我们首先讨论标准级备份策略的典型考虑事项。我们想要习惯的第一件事是 3-2-1备份规则

3-2-1备份策略

在整个行业中,你会经常听到术语3-2-1备份模型。在实施备份计划时,这是一个非常好的方法。3-2-1定义如下: 3 份数据; 例如,我们可能有工作副本; 将一份拷贝放到使用rsync设计的冗余CentOS服务器上; 并旋转,非现场USB备份是由备份服务器上的数据制成的。 2 种不同的备份介质。在这种情况下,我们实际上有三种不同的备份介质:笔记本电脑或工作站的固态硬盘上的工作副本,RADI6阵列上的CentOS服务器数据以及置于USB驱动器上的非现场备份。异地数据 1 份; 我们每晚都在外部旋转USB驱动器。另一种现代方法可能是云备份提供商。

系统恢复

一个 裸机恢复计划 仅仅是由一个CentOS管理员制定了一个计划,有完整的所有数据上网的重要系统。假设100%的系统故障和所有过去的系统硬件丢失,管理员必须有一个计划来实现正常运行时间,完整的用户数据成本最小化停机时间。Linux中使用的单片内核实际上使得使用系统映像的裸机恢复比Windows更容易。Windows使用微内核体系结构。

完整的数据恢复和裸机恢复通常通过组合方法来完成,包括工作,配置关键操作服务器的生产磁盘映像,遵守3-2-1规则的用户数据的冗余备份。即使是一些敏感的文件可能存储在一个安全的,防火的保险箱,受限制的访问受信任的公司人员。

多相 裸机恢复数据恢复计划 使用原生的CentOS工具可能包括-

  • dd制作和恢复已配置服务器的生产磁盘映像

  • rsync对所有用户数据进行增量备份

  • tar&gzip存储来自管理员的密码和笔记的加密备份文件。通常,这可以放在USB驱动器上,加密并锁定在高级管理器访问的保险箱中。此外,如果当前管理员赢得彩票并消失在某个阳光明媚的岛屿,这可确保其他人知道重要的安全凭证。

如果系统因硬件故障或灾难而崩溃,则以下将是恢复操作的不同阶段 -

  • 使用配置的裸机映像构建工作服务器

  • 从备份中将数据还原到工作服务器

  • 有物理访问权限执行前两个操作所需的凭据

使用rsync进行文件级备份

rsync 是一个很好的实用程序,用于同步本地或其他服务器上的文件目录。系统管理员已经使用了多年的 rsync ,因此它对于备份数据非常精致。作者认为, 同步 的最佳功能之一是可以从命令行编写脚本。

在本教程中,我们将以各种方式讨论rsync -

  • 探索和谈论一些常见的选择
  • 创建本地备份
  • 通过SSH创建远程备份
  • 恢复本地备份

rsync 以其用途命名为: Remote Sync ,功能强大且灵活。

以下是通过ssh 进行的基本 rsync 远程备份 -

MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/
rdc@192.168.1.143:home/rdc/ Documents/RemoteStuff/
rdc@192.168.1.143's password:
sending incremental file list
   6,148 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
   33,144 100%   31.61MB/s    0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
   892,406 100%   25.03MB/s    0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
   77 100%    2.21kB/s    0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
   43,188,224   1%    4.26MB/s    0:08:29
sent 2,318,683,608 bytes  received 446 bytes  7,302,941.90 bytes/sec
total size is 2,327,091,863  speedup is 1.00
MiNi:~ rdc$

以下同步在我们的局域网中发送了近2.3GB的数据。rsync的美妙之处在于,它逐块地逐个文件地工作。这意味着,如果我们只更改1MB文本文件中的两个字符,则只有一个或两个块将在下一个同步中通过局域网传输!

此外,可以禁用增量功能,以利用更多的网络带宽来减少CPU利用率。如果在1Gb专用Backup- Lan上每10分钟不断复制几个10MB数据库文件,这可能是明智的。原因是:这些将一直在变化,并且会每10分钟递增一次,并可能会对远程CPU征税。由于总传输负载不会超过5分钟,因此我们可能只希望完全同步数据库文件。

以下是 rsync 最常用的交换机-

rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path
参数 动作
-a 存档模式并假定-r,-p,-t,-g,-l
-d 只同步目录树,没有文件
-r 递归到目录中
-l 将符号链接复制为符号链接
-p 保留权限
-g 保留组
-v 详细输出
-z 通过网络链接进行压缩
-X 保留扩展属性
-A 保留ACL
-t 保留时间戳
-W 传输整个文件,而不是增量块
-u 不要覆盖目标文件
--progress 显示转移进度
--delete 删除目标上的旧文件
--max-size = XXX 要同步的最大文件大小

何时使用rsync

我个人对 rsync的 偏好是在将源文件从源主机备份到目标主机时。例如,用于数据恢复的所有主目录,甚至是异地并进入云中进行灾难恢复。

使用rsync进行本地备份

我们已经看到如何将文件从一台主机传输到另一台主机。同样的方法可以用来在本地同步目录和文件。

我们在root用户的目录中对 / etc / 进行手动增量备份。

首先,我们需要为关闭同步备份的〜/ root创建一个目录 -

[root@localhost rdc]# mkdir /root/etc_baks

然后,确保有足够的可用磁盘空间。

[root@localhost rdc]# du -h --summarize /etc/
49M    /etc/

[root@localhost rdc]# df -h
Filesystem           Size     Used     Avail    Use%     Mounted on
/dev/mapper/cl-root   43G      15G        28G    35%         /

我们很适合同步整个/ etc /目录 -

rsync -aAvr /etc/ /root/etc_baks/

我们的同步/ etc /目录 -

[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x.   3 root root      101 Feb  1 19:40 abrt
-rw-r--r--.   1 root root       16 Feb  1 19:51 adjtime
-rw-r--r--.   1 root root     1518 Jun  7  2013 aliases
-rw-r--r--.   1 root root    12288 Feb 27 19:06 aliases.db
drwxr-xr-x.   2 root root       51 Feb  1 19:41 alsa
drwxr-xr-x.   2 root root     4096 Feb 27 17:11 alternatives
-rw-------.   1 root root      541 Mar 31  2016 anacrontab
-rw-r--r--.   1 root root       55 Nov  4 12:29 asound.conf
-rw-r--r--.   1 root root        1 Nov  5 14:16 at.deny
drwxr-xr-x.   2 root root       32 Feb  1 19:40 at-spi2
--{ condensed output }--

现在我们来做一个增量rsync -

[root@localhost etc_baks]# rsync -aAvr --progress  /etc/ /root/etc_baks/
sending incremental file list

test_incremental.txt
   0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1145/1282)

sent 204620 bytes  received 2321 bytes  413882.00 bytes/sec
total size is 80245040  speedup is 387.77

[root@localhost etc_baks]#

只有我们的 _testincremental.txt 文件被复制。

使用rsync进行远程差异备份

让我们在部署了备份计划的服务器上进行初始rsync完全备份。这个例子实际上是将Mac OS X Workstation上的一个文件夹备份到CentOS服务器上。 rsync的 另一个重要方面是它可以在rsync已经移植到的任何平台上使用。

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
rdc@192.168.1.143:Documents/RemoteStuff
rdc@192.168.1.143's password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes  received 336 bytes  9,720,257.27 bytes/sec
total size is 2,326,636,892  speedup is 1.00
MiNi:~ rdc$

我们现在已经将一个文件夹从工作站备份到运行RAID6卷的服务器上,同时异地存储了旋转的灾难恢复介质。使用rsync为我们提供标准的3-2-1备份,只有一台服务器具有昂贵的冗余磁盘阵列和旋转差异备份。

现在让我们在添加一个名为 _testfile.txt 的新文件后,使用rsync对同一文件夹进行另一次备份。

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
rdc@192.168.1.143:Documents/RemoteStuff
rdc@192.168.1.143's password:  
sending incremental file list
 ./
test_file.txt

sent 814 bytes  received 61 bytes  134.62 bytes/sec
total size is 2,326,636,910  speedup is 2,659,013.61
MiNi:~ rdc$

正如你所看到的,只有新文件通过 rsync 传送到服务器。差异比较是在逐个文件的基础上进行的。

需要注意的是:这只会复制新文件:test_file.txt,因为它是唯一包含更改的文件。rsync使用ssh。我们不需要在任何一台机器上使用我们的root帐户。

简单,强大且高效, rsync 非常适合备份整个文件夹和目录结构。但是, rsync 本身并不会自动执行此过程。这是我们需要挖掘我们的工具箱并找到最适合这项工作的最佳,最小和最简单的工具的地方。

要使用 cronjobs 自动化rsync备份,SSH用户必须使用SSH密钥进行身份验证。这与cronjobs结合使rsync可以在一定的时间间隔内自动完成。

将DD用于逐块裸机恢复图像

DD是一个Linux实用程序,自从Linux内核开始实现GNU实用程序以来一直存在。

_dd_以最简单的方式复制选定磁盘区域的映像。然后提供复制物理磁盘的选定块的功能。因此,除非有备份,否则一旦dd在磁盘上写入,所有块都被替换。以前的数据丢失超过了即使是高价位的专业级数据恢复的恢复能力。

使用 dd 制作可启动系统映像的整个过程如下所示

  • 从可启动Linux发行版的CentOS服务器启动
  • 找到要映像的可引导磁盘的名称
  • 决定恢复映像的存储位置
  • 查找磁盘上使用的块大小
  • 启动dd映像操作

在本教程中,为了时间和简单起见,我们将从CentOS虚拟机创建主引导记录的ISO映像。然后,我们会将这个图像存储在异地。如果我们的MBR损坏并需要恢复,则可以将相同的过程应用于整个可启动磁盘或分区。但是,本教程所需的时间和磁盘空间确实有些过分。

鼓励CentOS管理员精通在测试环境中恢复完全可引导的磁盘/分区并执行裸机恢复。当最终需要在现实生活中与管理人员和几十名终端用户计算停机时间一起完成实践时,这将会承受很大的压力。在这种情况下,10分钟搞定事情看起来像是一场永恒,并且让人汗流swe背。

- 使用dd时,请确保不要混淆源卷和目标卷。 您可以通过将备份位置复制到引导驱动器来销毁数据和可引导服务器。或者可能更糟糕的是通过在DD的非常低的水平上复制数据来永久销毁数据。

以下是 dd 的常用命令行开关和参数-

参数 动作
if= 在要复制的文件或源中
of= 输出文件或文件的副本
bs 设置输入和输出块大小
obs 设置输出文件块大小
ibs 设置输入文件块大小
count 设置要复制的块数
conv 为成像添加额外选项
Noerror 不要停止处理错误
sync 发生错误或未对齐时,焊盘不合适输入块

关于块大小的注意事项 - dd的默认块大小为512字节。 这是低密度硬盘驱动器的标准块大小。目前较高密度的HDD已经增加到4096字节(4kB)的块大小以允许1TB和更大的磁盘。因此,在使用dd和更新的更高容量的硬盘之前,我们需要检查磁盘块的大小。

对于本教程,我们将使用在VMWare中运行的CentOS安装,而不是使用 dd 工作在生产服务器上。我们还将配置VMWare来引导可引导的Linux ISO映像,而不是使用可引导的USB Stick。

首先,我们需要下载名为 CentOS Gnome ISO 的CentOS映像。这接近3GB,建议始终保留一份用于创建可启动USB拇指驱动器的副本,并引导到虚拟服务器安装中进行故障排除和裸机映像。

其他可引导的Linux发行版也可以正常工作。Linux Mint可用于可启动的ISO,因为它具有出色的硬件支持和优化的GUI磁盘工具以进行维护。

CentOS GNOME Live可启动映像可以从以下网站下载:http : //buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso

让我们配置我们的VMWare工作站安装从我们的Linux可启动镜像启动。这些步骤适用于OS X上的VMWare。但是,它们在Linux,Windows甚至Virtual Box上的VMWare Workstation上类似。

- 使用Virtual Box或VMWare Workstation等虚拟桌面解决方案是设置学习CentOS管理任务的实验场景的好方法。 它提供了安装几个CentOS安装的能力,几乎没有硬件配置让人们专注于管理,甚至在进行更改之前保存服务器状态。

首先让我们配置一个虚拟的光盘,并附上我们的ISO映像来启动,而不是安装虚拟的CentOS服务器 -

ISO映像

现在,设置启动盘 -

启动磁盘

现在启动时,我们的虚拟机将从CentOS可启动ISO镜像启动,并允许访问之前配置的虚拟CentOS服务器上的文件。

让我们来检查我们的磁盘,看看我们想从哪里复制MBR(浓缩输出如下)。

MiNt ~ # fdisk -l
Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

我们找到了两个物理磁盘: sdasdb 。每个块的大小为512字节。因此,我们现在将运行 dd 命令来复制SDA1上MBR的前512个字节。

最好的办法是

[root@mint rdc]# dd if=/dev/sda bs=512 count=1  | gzip -c >
/mnt/sdb/images/mbr.iso.gz
1+0 records in
1+0 records out
512 bytes copied, 0.000171388 s, 3.0 MB/s

[root@mint rdc]# ls /mnt/sdb/
   mbr-iso.gz

[root@mint rdc]#

就像那样,我们有主引导记录的完整映像。如果我们有足够的空间来映像启动驱动器,我们可以轻松地制作完整的系统启动映像 -

dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz

所述 CONV =同步 时使用的字节必须为一个物理介质对准。在这种情况下,如果未读取准确的4K对齐,则dd可能会出错(比如说...一个只有3K的文件,但需要在磁盘上占用最少的一个4K块),或者读取时出现错误,文件不能被dd读取)。因此,具有 conv = sync,noerror的 dd 会将3K用平凡但有用的数据填充到4K块对齐的物理介质中。虽然不会出现可能会结束大型操作的错误。 __

处理来自磁盘的数据时,我们总是希望包含: conv = sync,noerror 参数。

这仅仅是因为磁盘不像TCP数据那样是流。它们由对齐到一定大小的块组成。例如,如果我们有512个字节块,则只有300个字节的文件仍然需要512个字节的磁盘空间(对于inode信息(如权限和其他文件系统信息),可能需要2个块)。

使用gzip和tar进行安全存储

gzip和tar是CentOS管理员必须习惯使用的两个实用程序。它们不仅仅用于解压档案文件。

在CentOS Linux中使用Gnu Tar

Tar是一个类似于Windows 上的 winrar 的归档实用程序。它的名字 磁带存档 缩写为 tar 几乎总结了实用程序。为了逻辑上的方便, tar 会把文件放入档案中。因此,而不是存储在/ etc中的数十个文件。我们可以将它们“tar”到备份和存储便利的存档中。

__多年来, tar 一直是在Unix和Linux上存储归档文件的标准。因此,使用tar和 gzipbzip 被认为是每个系统上档案的最佳实践。

以下是与tar一起使用的常用命令行开关和选项的列表 -

参数 动作
-c 创建一个新的.tar文件
-C 提取到不同的目录
-j 使用bzip2压缩
-z 使用gzip压缩
-v 详细的演示归档进度
-t 列出存档内容
-f 档案的档案名称
-x 提取tar档案

以下是创建 tar 归档的基本语法。

tar -cvf [tar archive name]

关于使用tar压缩机制的注意事项 - 建议在使用tar:gzip和bzip2时,坚持使用两种常见压缩方案之一。 gzip文件消耗较少的CPU资源,但通常较大。虽然bzip2压缩需要更长的时间,但他们使用更多的CPU资源; 但会导致较小的文件大小。

使用文件压缩时,我们总是希望使用标准文件扩展名,让包括我们自己在内的每个人都知道(与通过试验和错误猜测)需要哪种压缩方案来提取压缩文件。

bzip2 .tbz
bzip2 .tar.tbz
bzip2 .tb2
gzip .tar.gz
gzip .tgz

当需要在Windows上提取归档文件或在Windows上使用时,建议使用 .tar.tbz.tar.gz, 因为大多数情况下,三个字符的单个扩展名只会混淆Windows和Windows管理员(但是,有时候是期望的结果)

让我们从我们从Mac Workstation复制的远程备份中创建一个 gzipped tar归档文件 -

[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[rdc@mint Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz

- 我们不是将所有文件直接添加到存档中,而是存档整个文件夹 RemoteStuff 。这是最简单的方法。仅仅因为当提取时,整个目录 RemoteStuff 被解压缩,当前工作目录内的所有文件都是 ./currentWorkingDirectory/RemoteStuff/

现在,我们将解压缩到 / root / home目录中。

[root@centos ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[root@mint ~]# ping www.google.com

如上所示,所有文件都被简单地提取到我们当前工作目录中的包含目录中。

[root@centos ~]# ls -l
total 2262872
-rw-------.   1   root   root       1752   Feb   1   19:52   anaconda-ks.cfg
drwxr-xr-x. 137   root   root       8192   Mar   9   04:42   etc_baks
-rw-r--r--.   1   root   root       1800   Feb   2   03:14   initial-setup-ks.cfg
drwxr-xr-x.   6   rdc    rdc        4096   Mar  10   22:20   RemoteStuff
-rw-r--r--.   1   root   root 2317140451   Mar  12   07:12   RemoteStuff.tgz
-rw-r--r--.   1   root   root       9446   Feb  25   05:09   ssl.conf [root@centos ~]#

使用gzip压缩文件备份

如前所述,我们可以使用tar或bzip2或gzip与 -j-z 命令行开关。我们也可以使用gzip压缩单个文件。但是,单独使用bzip或gzip并不能提供与 tar 结合的功能。

使用 gzip时 ,默认操作是删除原始文件,将每个文件替换为添加.gz扩展名的压缩版本。

gzip的一些常用命令行开关是 -

参数 动作
-c 放入档案后保留文件
-l 获取压缩存档的统计信息
-r 递归压缩目录中的文件
-1 thru 9 以1到9的比例指定压缩级别

gzip 或多或少可以逐个文件地工作,而不是像一些Windows O / S压缩实用程序那样存档。主要原因是 tar 已经提供了高级存档功能。 gzip 被设计为仅提供压缩机制。

因此,在考虑 gzip 时,请考虑一个文件。考虑多个文件时,请考虑 tar 档案。现在让我们来探讨一下我们以前的 tar 档案。

- 经验丰富的Linux专业人员通常会将tarred档案作为tarball。

让我们从我们的 rsync 备份中创建另一个 tar 归档文件。 __

[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/

为了演示目的,让我们 gzip 新创建的tarball,并告诉 gzip 保留旧文件。默认情况下,如果没有 -c 选项,gzip将用 .gz 文件替换整个tar归档文件。

[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.

让我们试着用 gzip 测试 -l 开关。

[root@centos Documents]# gzip -l RemoteStuff.tar.gz  
     compressed        uncompressed        ratio uncompressed_name
     2317140467          2326661120        0.4% RemoteStuff.tar

[root@centos Documents]#

为了演示 gzip 与Windows Zip Utilities的不同之处,让我们在文本文件的文件夹上运行gzip。

[root@centos Documents]# ls text_files/
 file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
[root@centos Documents]#

现在让我们使用-r选项递归压缩目录中的所有文本文件。

[root@centos Documents]# gzip -9 -r text_files/

[root@centos Documents]# ls ./text_files/
file1.txt.gz  file2.txt.gz  file3.txt.gz  file4.txt.gz  file5.txt.gz

[root@centos Documents]#

看到?不是有些人可能预料到的。所有原始文本文件都被删除,并且每个文件都被单独压缩。由于这种行为,当需要在单个文件中工作时,最好仅考虑 gzip

使用 tarballs ,让我们将我们的 rsynced tarball 抽取到一个新的目录中。

[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php

如上所示,我们将我们的tarball解压缩到/ tmp目录中。

[root@centos Documents]# ls /tmp
hsperfdata_root
RemoteStuff

加密TarBall档案

在灾难恢复的情况下,加密tarball档案以存储可能需要由组织的其他员工访问的安全文档可能是一个棘手的概念。基本上有三种方法可以做到这一点:使用GnuPG,或使用openssl,或使用第三部分实用程序。

GnuPG主要是为非对称加密而设计的,并且在头脑中具有身份关联而不是密码。诚然,它可以用于对称加密,但这不是GnuPG的主要优势。因此,当有更多的人比原来的人需要访问时(比如一个企业管理者想要防止管理员把握王国的所有关键作为杠杆),我会打折扣GnuPG以存储具有物理安全性的档案。

像GnuPG这样的Openssl可以做我们想要的并且随CentOS一起发布。但是,再一次,并不是专门设计来做我们想要的,加密在安全社区中受到了质疑。

我们的选择是一个名为 7zip 的实用程序。7zip是一个像 gzip 这样的压缩工具,但有更多的功能。就像Gnu Gzip一样,7zip及其标准在开源社区中。我们只需要从我们的EHEL存储库安装7zip(下一章将详细介绍安装扩展企业存储库)。

在Centos上安装7zip

一旦我们的EHEL存储库已经在CentOS中加载和配置,7zip就是一个简单的安装。

[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
epel/x86_64/metalink
|  13 kB  00:00:00
epel
| 4.3 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB  00:00:04      
(2/2):
epel/x86_64/primary_db
| 4.6 MB  00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved

这样做很简单,7zip已经安装完毕,可以用于我们的tarball档案的256位AES加密。

现在我们使用7z用密码加密我们的gzip压缩文件。这样做的语法非常简单 -

7z a -p <output filename><input filename>

其中, a: 添加到存档, -p: 加密并提示输入密码

[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)

Creating archive: RemoteStuff.tgz.7z

Items to compress: 1

Enter password (will not be echoed):
Verify password (will not be echoed) :

Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz  RemoteStuff.tgz.7z  slapD
text_files

[root@centos Documents]#

现在,我们的.7z存档文件使用256位AES对gzip压缩包进行加密。

- 7zip使用AES 256位加密和密码和计数器的SHA-256散列,重复512K次以获得密钥导出。 如果使用复杂的密钥,这应该足够安全。

进一步加密和重新压缩档案的过程可能需要一些时间与较大的档案。

7zip是一种比gzip或bzip2更多功能的高级产品。但是,它不像CentOS或Linux世界那样标准。因此,其他公用事业应尽可能经常使用。