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
';