rdiff-backup(增量备份工具)的安装和使用
rdiff-backup 是一个用于本地/远程增量备份的强大而易用的 Python 脚本,它适用于任何 POSIX 操作系统,如Linux、Mac OS X 或 Cygwin。它集合了镜像和增量备份的显著特性。
值得注意的是,它保留了子目录、dev 文件、硬链接,以及关键的文件属性,如权限、uid/gid 所有权、修改时间、扩展属性、acl 以及 resource fork。它可以通过管道以高效带宽的模式工作,这与流行的 rsync 备份工具类似。
rdiff-backup 通过使用 SSH 将单个目录备份到另一个目录,这意味着数据传输被加密并且是安全的。目标目录(在远程系统上)最终会得到源目录的完整副本,但是此外的反向差异会存储在目标目录的特殊子目录中,从而可以恢复前一段时间丢失的文件。
如果你通过网络运行它,则必须在两个系统中都安装 rdiff-backup,两者最好是相同版本。
使用的系统为CentOS 7。
需要ssh支持,使用前请先配置ssh的免密登陆。
安装rdiff-bakcup
1.安装最新版本的EPEL仓库
yum install epel-release
2.安装Python(可以省略,安装rdiff-backup时会自动安装)
Python版本不低于v2.2
rpm -qa | grep python
检查是否安装Python
3.安装librsync(可以省略,安装rdiff-backup时会自动安装)
Librsync版本不低于v0.9.7
rpm -qa | grep librsync
检查是否安装librsync
安装librsync
yum install librsync
4.安装pylibacl(可选)(可以省略,安装rdiff-backup时会自动安装)
yum install pylibacl
5.安装pyxattr Python(可选)(可以省略,安装rdiff-backup时会自动安装)
6.安装rdiff-backup
yum install rdiff-backup
备份
源服务器和备份服务器都可以发起备份,第三方服务器也可以发起备份
源服务器发起
rdiff-backup /some/local-dir username@ip::/whatever/remote-dir
备份服务器发起
rdiff-backup username@ip::/some/local-dir /whatever/remote-dir
username:ssh登陆的用户名
ip:ssh登陆的ip
/some/local-dir:需要备份的目录
/whatever/remote-dir:备份到备份服务器的目录
备份相关选项
--print-statistics 打印摘要统计信息
-v[0-9], --verbosity [0-9] 日志详细级别,默认3,9最详细
注意
ssh非默认端口(22)情况
rdiff-backup –remote-schema 'ssh -p port %s "rdiff-backup –server"' 'username@ip'::/some/local-dir /whatever/remote-dir
port:ssh端口
查看备份
rdiff-backup -l /whatever/remote-dir
恢复
恢复时可以恢复整个镜像,也可以恢复一个文件夹或者文件。
第一种方法
rdiff-backup --restore-as-of(-r) [time] [备份目录] [恢复目录]
[time] 时间:
1. now,当前的时间,最新的备份
2. 日期时间格式的字符串,如“2002-01-25T07:00:00+02:00”
3. Y、M、W、D、h、m、s(年、月、周、天、时、分、秒)
例如,“1h78m”表示一小时七八分钟前的时间,“3D”表示3天,“3W2D10h7s”表示3周、2天、10小时和7秒(23天10小时7秒)
4. 格式为YYYY/MM/DD、YYYY-MM-DD、MM/DD/YYYY或MM-DD-YYYY的日期格式
例如:“2002/3/5”、“03-05-2002”和“2002-3-05”都是指2002年3月5日00:00:00。
5. NB,N为非负整数。例如“0B”指当前镜像的时间,“3B”指第三个最新增量。
[备份目录] 目录或文件
[恢复目录] 恢复到源服务器的指定目录或文件
使用-l/--list-incrememts查看可用的增量,然后指定还原的确切时间。
1.使用now恢复一个文件夹
2.按日期时间格式的字符串恢复,如“2002-01-25T07:00:00+02:00”,如下图
3.按 年-月-日 日期恢复
4.恢复“3B”第三个最新增量
第二种方法
rdiff-backup [增量文件] [恢复目录]
[增量文件] 位于/备份目录/rdiff-backup-data/increments/目录中
[恢复目录]恢复到源服务器的指定目录或文件
查找相应的增量文件。它将位于/backup/rdiff-backup-data/increments/目录中,其名称类似于“local.2002-11-09T12:43:53-04:00.dir”。请注意,增量文件都以“.diff”、“.snapshot”、“.dir”或“.missing”结尾,其中“.missing”仅表示该文件当时不存在(最后,其中一些文件可能是gzip压缩的,并有一个额外的“.gz”来表示这一点)。
恢复单个文件
恢复文件夹
注意事项:
1.源文件、文件夹如果存在不能直接覆盖恢复,应该恢复到一个新的文件、文件夹。
2.按时间恢复时,如果指定的时间点没有备份,那将会恢复指定时间点上一份备份。如果没有上一份备份,则恢复最早的备份。
例如:如果设置的是“3D”,也就是恢复三天前的备份,但是只有2天前和4天前的数据,这时运行恢复会恢复到4天前;如果只有2天前的数据,运行恢复会恢复到2天前的数据。
3.测试恢复目录时出现不能新建两级目录的情况;恢复单个文件时不能新建目录,只能使用已有目录。
4.远端家目录不能使用~代替。
删除旧备份
1. 按时间删除
此命令删除有关文件版本的最新信息,这些信息已存在两个星期了:
rdiff-backup --remove-older-than 2W host.net::/remote-dir
请注意,已有一年未更改的文件仍将保留。但是运行此命令后,无法还原15天前删除的文件。
2. 按备份数量删除
与还原时一样,有多种方法可以指定时间。下面的“20B”告诉rdiff-backup只能删除过去20份新增备份之前的备份 rdiff-backup会话保存的信息。(nB 语法仅在0.13.1之后的版本中可用。)
rdiff-backup --remove-older-than 20B host.net::/remote-dir
删除前五个新增备份之前的备份
注意事项:
1.如果备份的时候没有文件改动,使用-l也无法查到这次备份记录,但是使用nB设置保留增量备份份数时,这一次也算一份增量备份。
例如:已有三份增量备份,第四次备份时没有文件改动,使用-l查看还是只有三份增量备份,再执行--remove-older-than 3B命令,这时使用-l查看就会发现就剩2份增量备份。