0x00 引言
在Linux中,cp命令可实现本机文件的全量复制,scp命令可实现远程文件的全量复制。而Rsync[1](Remote Synchronizetion)可实现本地、远程文件的增量复制(只复制不同的文件)。
本文在Rsync技术的基础上,详细介绍一套备份还原功能的设计。
0x01 Rsync使用方法
1 | 1 常用参数 |
1、常用参数
参数 | 作用 |
---|---|
-a | 归档模式传输, 等于-tropgDl -t -r -o -p -g -D -l |
-v | 详细模式输出, 打印速率, 文件数量等 |
-i | 输出一个摘要信息 |
-q | 精简输出 |
-z | 传输时进行压缩以提高效率 |
-r | 递归传输目录及子目录,即目录下得所有目录都同样传输 |
-t | 保持文件时间信息 |
-o | 保持文件属主信息 |
-g | 保持文件属组信息 |
-p | 保持文件权限 |
-l | 保留软连接 |
-H | 保留硬连接 |
-X | 保留拓展属性 |
-P | 显示同步的过程及传输时的进度等信息 |
-D | 保持设备文件信息 |
-L | 保留软连接指向的目标文件 |
-e | 使用的信道协议,指定替代rsh的shell程序 |
–append | 指定文件接着上次传输中断处继续传输 |
–append-verify | 使用参数续传(在断点续传之后,验证一下文件,如果不同,修复文件) |
–exclude=文件名 | 指定排除不需要传输的文件 |
–exclude-from=文件名 | 排除文件内写的文件名(文件内可以写多个文件名) |
–bwlimit=传输速度 | 限速传输(单位:MB) |
–delete | 让目标目录和源目录数据保持一致 |
–password-file=文件名 | 使用密码文件(文件内要写密码) |
–port | 指定端口传输 |
–modify-window=NUM | 决定文件是否时间相同时使用的时间戳窗口,默认为0 |
1.与scp类似,Rsync可实现”推”、”拉”两种方式;
2.rsync不管是推还是拉,推送目录的时候带/和不带/是有区别的。例如/etc/,代表推拉etc目录下所有文件(不包括etc文件夹本身)。/etc,代表推拉包括etc目录整体
3.Windows的FAT文件系统(此文件系统有2秒范围内的精确度差异)传输数据时,设置”–modify-window=1”将非常有用(允许文件时间戳有1秒的差异)
2、使用方式
2.1、本地方式
1 | rsync -avL --append-verify --delete '源文件目录' '目标文件目录' |
2.2、远程方式
1 | # 推 |
2.3、守护进程方式
首先任意创建一个配置文件rsyncd.conf:
1 | uid = 0 |
在服务端开启rsync服务:
1 | # 创建密码文件 |
在客户端执行rsync远程传输文件:
1 | # 创建密码文件 |