rsync

  rsync远程数据同步工具,可以通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync”算法来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项。

rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]host:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

对应于以上六种命令格式,rsync有六种不同的工作模式(注:2和5,3和4的区别暂时没有发现):
  1. 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号“:”分隔符时就启动这种工作模式。如:rsync -a /data /backup;
  2. 使用一个远程shell程序(rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号“:”分隔符时启动该模式。如:rsync -avz *.c foo:src/bar;
  3. 使用一个远程shell程序(rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC路径中包含单个冒号“:”分隔符时启动该模式。如:rsync -avz foo:src/bar /data;
  4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含“::”分隔符时启动该模式。如:rsync -av root@192.168.1.100::www /databack;
  5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含“::”分隔符时驱动该模式。如:rsync -av /databack root@192.168.1.100::www
  6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令省略掉本地机信息即可。如:rsync -v rsync://192.168.1.100/www

选项参数:

  • -v,--verbose 详细模式输出;
  • -q,--quiet 精简输出模式;
  • -c,--checksum 打开校验开关,强制对文件传输进行校验;
  • -a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD;
  • -r,--recursive 对子目录以递归模式处理;
  • -R,--relative 使用相对路径信息;
  • -b,--backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件的前缀;
  • --back-dir,将备份文件(如~filename)存放在目录下;
  • -suffixSUFFIX,定义备份文件前缀;
  • -u,--update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖新的文件;
  • -l,--links 保留软链接;
  • -L,--copy-links 像对待常规文件一样处理软链接;
  • --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链接;
  • --safe-links 忽略指向SRC路径目录树以外的链接;
  • -H,--hard-links 保留硬链接;
  • -p,--perms 保持文件权限;
  • -o,--onwer 保持文件属主信息;
  • -g,--group 保持文件属组信息;
  • -D,--devices 保持设备文件信息;
  • -t,--times 保持文件时间信息;
  • -S,--sparse 对稀疏文件进行特殊处理以节省DST的空间;
  • -n,--dry-run 显示哪些文件将被传输;
  • -w,--whole-file 拷贝文件不进行增量检测;
  • -x,--one-file-system 不要跨越文件系统边界;
  • -B,--block-size=SIZE 检验算法使用的块尺寸,默认字节700;
  • -e,--rsh=command 指定使用rsh、ssh方式进行数据同步;
  • --rsync-path=PAHT 指定远程服务器上的rsync命令所在的路径信息;
  • -C,--cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件;
  • --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件;
  • --delete 删除DST中那些SRC没有的文件;
  • --delete-exclude 同样删除接收端安歇被该选项指定排除的文件;
  • --delete-after 传输结束以后再删除;
  • --ignore-errors 即使出现IO错误也进行删除;
  • --max-delete=NUM 最多删除NUM个文件;
  • --partial 保留那些因故没有完全传输的文件,用于加快随后的再次传输;
  • --force 强制删除目录即使不为空;
  • --numeric-ids 不将数字的用户和组id匹配为用户名和组名;
  • --timeout=time ip超时时间,s;
  • -I,--ignore-times 不挑锅那些有同样的时间和长度的文件;
  • --size-only 当决定是否要备份文件时,仅仅查看文件大小而不考虑文件时间;
  • --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认0;
  • -T,--temp-dir=DIR 在DIR中创建临时文件;
  • --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份;
  • -P,等同于--partial;
  • --progress 显示备份过程;
  • -z,--compress 对备份的文件在传输时进行压缩处理;
  • --exclude=PATTERN 指定排除不需要传输的文件模式;
  • --include=PATTERN 指定不排除而需要传输的文件模式;
  • --exclude-from=FILE 排除FILE中指定模式的文件;
  • --include-from=FILE 不排除FILE中指定模式匹配的文件;
  • --version 打印版本信息;
  • --address 绑定到特定的地址;
  • --config=FILE 指定其他的配置文件,不适用默认的rsyncd.conf;
  • -port=PORT 指定rsync的服务端口;
  • --block-io 对远程shell使用阻塞IO;
  • --stats 给出某些文件的传输状态;
  • --progress 在传输时显示传输过程;
  • --log-format=FORMAT 指定日志文件格式;
  • --password-file=FILE 从FILE文件中得到密码;
  • --bbwlimit=KBPS 限制IO带宽;
  • -h,--help 显示帮助信息;

客户端使用rsync命令来备份服务端上的数据了,SSH方式是通过系统用户来进行备份

rsync -vzrtopg --progress -e ssh --delete work@172.16.78.192:/www/* /databack/experiment/rsync
  • -v,--verbose 详细模式输出;
  • -z,--compress 对备份的文件在传输时进行压缩处理;
  • -r,--recursive 对子目录以递归模式处理;
  • -t,--times 保持文件时间信息;
  • -p,--perms 保持文件权限;

  • -o,--onwer 保持文件属主信息;

  • -g,--group 保持文件属组信息;

  • --progress 在传输时显示传输过程;
  • -e,--rsh=command 指定使用rsh、ssh方式进行数据同步;
  • --delete 删除DST中那些SRC没有的文件;

后台服务方式

启动rsync服务,编辑/etc/xinetd.d/rsync文件,将其中的disable=yes改为disable=no,并重启xinetd服务,如下:

创建配置文件,默认安装好rsync程序后,并不会自动创建rsync的主配置文件,需要手工来创建,其主配置文件为“/etc/rsyncd.conf”,创建该文件并插入如下内容:

vi /etc/rsyncd.conf

#port=873         监听端口默认873,也可以是其他的端口 uid=root         以哪个用户的身份来传输 gid=root         以哪个组的身份来传输 max connections=4    指定最大可以连接的客户端数 log file=/var/log/rsyncd.log   pid file=/var/run/rsyncd.pid  指定pid lock file=/var/run/rsyncd.lock 指定支持 max connections 参数的锁文件。 secrets file=/etc/rsyncd.passwd 指定你密码文件,如果设定验证用户,这一项必须设置,设定密码权限为,尽量减少此文件的对外权限 hosts deny=172.16.78.0/22  禁止访问的用户段,可以是网段,多个ip地址用空格隔开 [www] comment= backup web path=/www read only = no 是否为只读,如果是yes的话,客户端推送给服务端的时候不成功,这时候需要改成no exclude=test auth users=work 指定验证用户名,可以不设置,不设置默认不用密码,设置的话安全性更高
#list=true 是否可以列出模块名 rsync --port 8730 192.168.1.100,如果是yes的话列出客户端所有模块的名字

创建密码文件,采用这种方式不能使用系统用户对客户端进行认证,所以需要创建一个密码文件,其格式为“username:password”,用户名可以和密码可以随便定义,最好不要和系统帐户一致,同时要把创建的密码文件权限设置为600,这在前面的模块参数做了详细介绍。

echo "work:abc123" > /etc/rsyncd.passwd
chmod 600 /etc/rsyncd.passwd

备份,完成以上工作,现在就可以对数据进行备份了,如下:

rsync -avz --progress --delete work@192.168.1.100::www /databack/experiment/rsync

恢复,当服务器的数据出现问题时,那么这时就需要通过客户端的数据对服务端进行恢复,但前提是服务端允许客户端有写入权限,否则也不能在客户端直接对服务端进行恢复,使用rsync对数据进行恢复的方法如下:
rsync -avz --progress /databack/experiment/rsync/ work@172.16.78.192::www

Password:
原文地址:https://www.cnblogs.com/cf532088799/p/8330697.html