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 (youcl) : 192.168.56.102 Local Backup Server (backup) : 192.168.56.10
如前所述,您必须在两台机器上安装相同版本的rdiff-backup ,现在请尝试在两台机器上检查版本,如下所示:
$ rdiff-backup -V
检查服务器上的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备份 - 备份进程文件
现在,在服务器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中的本地/远程增量备份。 请通过下面的反馈部分与我们分享您的想法。