rdiff-backup - 用于Linux的远程增量备份工具

在本教程中,我们将向您解释如何安装和使用rdiff-backup,这是一个易于使用的Python脚本,用于Linux中的本地/远程增量备份。

rdiff-backup是用于本地/远程增量备份的强大且易于使用的Python脚本,可用于任何POSIX操作系统(如Linux,Mac OS X或Cygwin) 它汇集了镜像和增量备份的显着特性。

值得注意的是,它保留了子目录,dev文件,硬链接和关键文件属性,例如权限,uid / gid所有权,修改时间,扩展属性,acls和资源叉。 它可以以与流行的rsync备份工具相似的方式在管道上以带宽有效的模式工作。

rdiff-backup通过使用SSH的网络将单个目录备份到另一个目录,这意味着数据传输被加密,因此是安全的。 目标目录(在远程系统上)最终得到源目录的完整副本,但是额外的反向差异存储在目标目录的特殊子目录中,从而可以恢复前一段时间丢失的文件。

依赖关系

要在Linux中使用rdiff-backup,您需要在系统上安装以下软件包:

  • Python v2.2或更高版本
  • librsync v0.9.7或更高版本
  • pylibacl和pyxattr Python模块是可选的,但分别是POSIX访问控制列表(ACL)和扩展属性支持必需。
  • rdiff-backup-statistics需要Python v2.4或更高版本。

如何在Linux中安装rdiff-backup

重要提示 :如果您通过网络运行,则必须安装rdiff-backup这两个系统,最好是rdiff-backup的两个安装都必须是完全相同的版本。

该脚本已经存在于主流Linux发行版的官方存储库中,只需运行以下命令来安装rdiff-backup及其依赖关系:

在Debian / Ubuntu上

$ sudo apt-get update
$ sudo apt-get install librsync-dev rdiff-backup

在CentOS / RHEL 7上

# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
# rpm -ivh epel-release-7-9.noarch.rpm
# yum install librsync rdiff-backup

在CentOS / RHEL 6上

# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
# yum install librsync rdiff-backup

在Fedora上

# yum install librsync rdiff-backup
# dnf install librsync rdiff-backup [Fedora 22+]

如何在Linux中使用rdiff-backup

如前所述, rdiff-backup使用SSH连接到网络上的远程计算机,SSH中的默认身份验证是用户名/密码方法,通常需要人工交互。

但是,要自动执行诸如脚本等自动备份的任务,您需要使用SSH密钥配置SSH无密码登录 ,因为SSH密钥增加了两个Linux服务器之间的信任, 便于文件同步或传输

安装SSH密码登录后 ,可以使用以下示例开始使用该脚本。

将文件备份到不同的分区

下面的示例将备份另一个分区上的备份目录中的/etc目录:

$ sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup
将文件备份到不同的分区

将文件备份到不同的分区

要排除特定目录及其子目录,可以使用--exclude选项,如下所示:

$ sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup

我们可以使用--include-special-files选项包括所有设备文件,fifo文件,套接字文件和符号链接,如下所示:

$ sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

我们可以为文件选择设置另外两个重要标志; --max-file-size大小,排除大于给定大小(以字节为单位) --min-file-size size排除小于给定大小(以字节为单位)的文件:

$ sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

在本地Linux服务器上备份远程文件

为了本节的目的,我们将使用:

Remote Server (howtoing)	        : 192.168.56.102 
Local Backup Server (backup) 	: 192.168.56.10

如前所述,您必须在两台机器上安装相同版本的rdiff-backup ,现在请尝试在两台机器上检查版本,如下所示:

$ rdiff-backup -V
检查服务器上的rdiff版本

检查服务器上的rdiff版本

在备份服务器上,创建一个将存储备份文件的目录,如下所示:

# mkdir -p /backups

现在从备份服务器,运行以下命令从/backups远程Linux服务器192.168.56.102 /backups /root /var/log/ and /root

# rdiff-backup root@192.168.56.102::/var/log/ /backups/192.168.56.102_logs.backup
# rdiff-backup root@192.168.56.102::/root/ /backups/192.168.56.102_rootfiles.backup

下面的屏幕截图显示了远程服务器192.168.56.102上的根文件以及后台服务器上的备份文件192.168.56.10

在本地服务器上备份远程目录

在本地服务器上备份远程目录

记下在截图中看到的backup目录中创建的rdiff-backup-data目录,它包含有关备份过程和增量文件的重要数据。

rdiff备份 - 备份进程文件

rdiff备份 - 备份进程文件

现在,在服务器192.168.56.102上 ,附加文件已添加到根目录,如下所示:

验证备份目录

验证备份目录

让我们再次运行备份命令以获取更改的数据,我们可以使用-v[0-9] (其中数字指定详细程度级别,默认值为3,这是静默)选项来设置详细功能:

# rdiff-backup -v4 root@192.168.56.102::/root/ /backups/192.168.56.102_rootfiles.backup 
带摘要的增量备份

带摘要的增量备份

并列出/backups/192.168.56.102_rootfiles.backup目录中包含的部分增量备份的数量和日期,我们可以运行:

# rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/

使用Cron自动化rdiff-back备份

成功备份后,可以使用--print-statistics打印摘要统计--print-statistics 但是,如果我们不设置此选项,信息仍然可以从会话统计信息中获得。 在手册页的“统计”部分中阅读有关此选项的更多信息。

-remote-schema标志使我们能够指定连接到远程计算机的替代方法。

现在,我们先从备份服务器192.168.56.10创建一个backup.sh脚本,如下所示:

# cd ~/bin
# vi backup.sh

将以下行添加到脚本文件。

#!/bin/bash
#This is a rdiff-backup utility backup script
#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only  /"'  root@192.168.56.102::/var/logs  /backups/192.168.56.102_logs.back
#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
#append error message in ~/backup.log file
echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
exit 1;
fi
#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back

保存文件并退出,然后运行以下命令将脚本添加到备份服务器上的crontab 192.168.56.10

# crontab -e

添加此行以在午夜运行您的备份脚本:

0   0  *  *  * /root/bin/backup.sh > /dev/null 2>&1

保存crontab并关闭它,现在我们已经成功自动化了备份过程。 确保它按预期工作。

阅读rdiff-backup手册页以获取更多信息,详尽的使用选项和示例:

# man rdiff-backup

rdiff-backup主页: http//www.nongnu.org/rdiff-backup/

这就是现在! 在本教程中,我们向您展示了如何安装并基本使用rdiff-backup,这是一个易于使用的Python脚本,用于Linux中的本地/远程增量备份。 请通过下面的反馈部分与我们分享您的想法。