当前位置: 首页 > 科技观察

rdiff-backup:LinuxOSX或Cygwin中的远程增量备份工具

时间:2023-03-15 15:42:57 科技观察

它结合了镜像和增量备份的突出特点。值得注意的是,它保留了子目录、开发文件、硬链接和关键文件属性,例如权限、uid/gid所有权、修改时间、扩展属性、acl和资源分支。它通过管道以带宽高效模式工作,类似于流行的rsync备份工具。rdiff-backup使用SSH将单个目录备份到另一个目录,这意味着数据传输是加密和安全的。目标目录(在远程系统上)以源目录的完整副本结束,但另外反向差异存储在目标目录的特殊子目录中,使得恢复前段时间丢失的文件成为可能。依赖关系要在Linux中使用rdiff-backup,您需要在系统上安装以下软件包:Pythonv2.2或更高版本librsyncv0.9.7或更高版本pylibacl和pyxattrPython模块是可选的,但它们分别是POSIX访问控制列表所必需的(ACL)和扩展属性支持。rdiff-backup-statistics需要Pythonv2.4或更高版本。如何在Linux中安装rdiff-backup重要提示:如果您通过网络运行它,则必须在两个系统上安装rdiff-backup,并且版本完全相同。该脚本已经存在于主要Linux发行版的官方存储库中,只需运行以下命令来安装rdiff-backup及其依赖项:在Debian/Ubuntu上$sudoapt-getupdate$sudoapt-getinstalllibrsync-devrdiff-backup在CentOS/RHEL7上在#wgethttp://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm#rpm-ivhepel-release-7-9.noarch.rpm#yuminstalllibrsyncrdiff-CentOS/RHEL6中的备份#wgethttp://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm#rpm-ivhepel-release-6-8.noarch。rpm#yuminstalllibrsyncrdiff-backupinFedora#yuminstalllibrsyncrdiff-backup#dninstalllibrsyncrdiff-backup[Fedora22+]Linux中rdiff-backup的使用方法前面提到,rdiff-backup使用SSH连接到网络上的远程计算机,默认使用SSH身份验证是用户名/密码,通常需要人工交互。但是,要像脚本一样自动执行诸如自动备份之类的任务,则需要使用SSH密钥配置无密码登录SSH,因为SSH密钥增加了两个Linux服务器之间的信任以简化文件同步或传输。设置SSH无密码登录后,您可以使用下面的示例开始使用脚本。备份文件到不同分区下面的例子将/etc文件夹备份到另一个分区的Backup文件夹:$sudordiff-backup/etc/media/aaronkilik/Data/Backup/mint_etc.backupfilestodifferentpartitionstoexcludeone来指定一个文件夹及其子目录,你可以使用--exclude选项如下:$sudordiff-backup--exclude/etc/cockpit--exclude/etc/bluetooth/media/aaronkilik/Data/Backup/mint_etc.backup--include-special-files包括所有设备文件、fifo文件、socket文件和链接文件:$sudordiff-backup--include-special-files--exclude/etc/cockpit/media/aaronkilik/Data/Backup/mint_etc.backup还有两个用于选择文件的重要标志,--max-file-size用于排除大于给定字节大小的文件,--min-file-size用于排除小于给定字节大小的文件部分大小的文件:$sudordiff-backup--max-file-size5M--include-special-files--exclude/etc/cockpit/media/aaronkilik/Data/Backup/mint_etc.backup在本地Linux服务器上备份远程文件为此,我们使用:RemoteServer(tecmint):192.168.56.102LocalBackupServer(backup):192.168.56.10如前所述,您必须具有相同版本的rdiff-backup两台机器都安装了,如下图,尝试安装检查两台机器的版本:$rdiff-backup-V检查服务器中的rdiff版本在备份服务器中,创建一个目录来存放备份文件,如下所示:#mkdir-p/backups现在在备份服务器中,运行以下命令将远程Linux服务器192.168.56.102中的/var/log/和/root备份到/backups:#rdiff-backuproot@192.168.56.102::/var/log//backups/192.168.56.102_logs.backup#rdiff-backuproot@192.168.56.102::/root//backups/192.168.56.102_rootfiles.backup下面的截图显示了rootfolderonremoteserver192.168.56.102andbackedupfilesonbackupserver192.168.56.10:Backupremotedirectoryonlocalserver注意截图中“backup”目录下创建的rdiff-backup-data文件夹,里面包含备份的重要数据进程和增量文件rdiff-backup-备份进程文件现在,在192.168.56.102服务器的根目录中,已经添加了额外的文件,如下所示:验证备份目录让我们再次运行备份命令以获取更改的数据,我们可以使用-v[0-9](其中数字指定详细级别,默认值为3,即静默模式)选项设置详细功能:#rdiff-backup-v4root@192.168.56.102::/root//backups/192.168.56.102_rootfiles.backupIncrementalBackupswithDigest列出编号和d删除/backups/192.168.56.102_rootfiles.backup目录中包含的部分增量备份,我们可以运行:#rdiff-backup-l/backups/192.168.56.102_rootfiles.backup/使用cron使用--print自动进行rdiff-back备份-statistics成功备份后,我们可以打印汇总统计信息。但是,如果我们不设置这个选项,我们仍然可以从会话统计中得到。在手册页的“STATISTICS”部分阅读有关此选项的更多信息。-remote-schema选项允许我们指定连接到远程计算机的替代方法。现在,我们开始在备份服务器192.168.56.10上创建一个backup.sh脚本,如下所示:#cd~/bin#vibackup.sh在脚本中添加以下行。#!/bin/bash#Thisardiff-backuputilitybackupscript#Backupcommandiff-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#Checkingrdiff-backupcommandsuccess/errorstatus=$?if[$status!=0];then#appenderrormessagein~/backup.logfileecho"rdiff-backupexitCode:$status-CommandUnsuccessful">>~/backup.log;exit1;fi#Removeincrementalbackupfilesolderthanonemonthrdiff-backup--force--remove-older-than1M/backups/192.168.56.102_logs.back保存文件退出,然后运行以下命令将此脚本添加到服务器192.168.56.10上的crontab:#crontab-e添加此行以在每个午夜午夜运行备份脚本:00***/root/bin/backup.sh>/dev/null2>&1保存crontab并退出,现在我们已经成功地自动化了备份过程。确保一切按预期工作。阅读rdiff-backup手册页以获取更多信息、详细的使用选项和示例:#manrdiff-backuprdiff-backup主页:http://www.nongnu.org/rdiff-backup/就是这样!对于本教程,我们向您展示了如何安装和基本使用rdiff-backup,这是一个易于使用的Python脚本,用于在Linux中进行本地/远程增量备份。请通过下面的反馈框与我们分享您的想法。(标题图片:Pixabay,CC0)