UNIX RSYNC

2018-11-24 15:21 更新

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 来在 Windows 上运行 rsync。这对于自动备份来说非常方便。只装其中一个(不是两个),然后添加路径到 Windows 系统变量中:# 控制面板 -> 系统 -> 高级标签,环境变量按钮。编辑 "Path" 添加 rsync 的安装路径,比如:C:\Program Files\cwRsync\bin 或者 C:\cygwin\bin。这可以让 rsync 和 ssh 可用于 Windows 命令窗口中。

公钥认证

Rsync 是自动使用 SSH 隧道的,因此在服务端使用 SSH 认证。自动备份可免受用户的影响,rsync 命令对于使用 SSH 公钥认证可以不需要密码。
下面所有的命令都可在 windows 控制台中执行。在控制台(开始 -> 运行 -> cmd)中像在 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
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号