RSYNC
拷贝目录中所有内容:
# 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 或 独立打包的 cwrsynchttp://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 中描述的那样创建和上传密钥,根据你的情况改变 “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
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/59163.html