RSYNC
最后更新于:2022-04-01 22:43:26
Rsync 差不多可以代替 cp 和 scp,此外,断点续传是重启有效的。尾部的斜杠也有着不同的意思,请阅读 man 页面......这里有一些例子:
拷贝目录中所有内容:
# rsync -a /home/colin/ /backup/colin/
# rsync -a /var/ /var_bak/
# rsync -aR --delete-during /home/user/ /backup/ # 使用相对路径(看下面)
同之前一样,但使用了压缩和网络。Rsync 使用 SSH 进行传输,并且使用 SSH 密钥,如果设置的话。和 SCP 一样使用 ":"。一个典型的拷贝:
# rsync -axSRzv /home/user/ user@server:/backup/user/
排除在 /home/user/ 中任何 tmp 目录,并且保持相对目录层次结构,远程目录的结构就是 /backup/home/user/。典型的用于备份的命令。
# rsync -azR --exclude /tmp/ /home/user/ user@server:/backup/
SSH 连接使用端口 20022:
# rsync -az -e 'ssh -p 20022' /home/colin/ user@server:/backup/colin/
使用 rsync 守护进程(使用"::")是很快的,但没有透过 SSH 加密。 位置 /backup 定义在了配置文件 /etc/rsyncd.conf 中。变量 RSYNC_PASSWORD 可以设置用来免除手动输入密码。
# rsync -axSRz /home/ ruser@hostname::rmodule/backup/
# rsync -axSRz ruser@hostname::rmodule/backup/ /home/ # 回拷贝
一些重要选项:
-
`-a, --archive` 归档模式,等于 -rlptgoD (非 -H)
-
`-r, --recursive` 对子目录以递归模式处理
-
`-R, --relative` 使用相对路径名
-
`-H, --hard-links` 保留硬链结
-
`-S, --sparse` 对稀疏文件进行特殊处理以节省DST的空间
-
`-x, --one-file-system` 不跨越文件系统边界
-
`--exclude=PATTERN` 指定排除不需要传输的文件模式
-
`--delete-during` 传输期间删除
-
`--delete-after` 传输结束以后再删除
### 在 Windows 上使用 Rsync
可以通过 cygwin 或 独立打包的 [cwrsync](http://sourceforge.net/projects/sereds/) 来在 Windows 上运行 rsync。这对于自动备份来说非常方便。只装其中一个(_不是两个_),然后添加路径到 Windows 系统变量中:# 控制面板 -> 系统 -> 高级标签,环境变量按钮。编辑 "Path" 添加 rsync 的安装路径,比如:C:\Program Files\cwRsync\bin 或者 C:\cygwin\bin。这可以让 `rsync` 和 `ssh` 可用于 Windows 命令窗口中。
### 公钥认证
Rsync 是自动使用 SSH 隧道的,因此在服务端使用 SSH 认证。自动备份可免受用户的影响,rsync 命令对于使用 SSH 公钥认证可以不需要密码。
下面所有的命令都可在 windows 控制台中执行。在控制台(开始 -> 运行 -> cmd)中像在 [SSH](http://cb.vu/unixtoolbox_zh_CN.xhtml#ssh) 中描述的那样创建和上传密钥,根据你的情况改变 "user" 和 "server"。如果文件 authorized_keys2 不存在,拷贝 id_dsa.pub 成 authorized_keys2 并上传它。
# ssh-keygen -t dsa -N '' # 创建密钥对
# rsync user@server:.ssh/authorized_keys2 . # 从服务器拷贝本地文件
# cat id_dsa.pub >> authorized_keys2 # 或者使用编辑器添加这个公钥
# rsync authorized_keys2 user@server:.ssh/ # 拷贝文件回服务器
# del authorized_keys2 # 删除本地拷贝
现在测试一下(在同一行里面):
rsync -rv "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \
'user@server:My\ Documents/'
### 自动备份
使用批处理文件自动备份并添加到任务计划(程序 -> 附件 -> 系统工具 -> 任务计划)。举个例子,创建批处理文件 backup.bat 取代 user@server。
@ECHO OFF
REM rsync the directory My Documents
SETLOCAL
SET CWRSYNCHOME=C:\PROGRAM FILES\CWRSYNC
SET CYGWIN=nontsec
SET CWOLDPATH=%PATH%
REM uncomment the next line when using cygwin
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
echo Press Control-C to abort
rsync -av "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \
'user@server:My\ Documents/'
pause
';