zoukankan      html  css  js  c++  java
  • 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:
    
  • 相关阅读:
    ASP.NET Web API 控制器执行过程(一)
    ASP.NET Web API 控制器创建过程(二)
    ASP.NET Web API 控制器创建过程(一)
    ASP.NET Web API WebHost宿主环境中管道、路由
    ASP.NET Web API Selfhost宿主环境中管道、路由
    ASP.NET Web API 管道模型
    ASP.NET Web API 路由对象介绍
    ASP.NET Web API 开篇示例介绍
    ASP.NET MVC 视图(五)
    ASP.NET MVC 视图(四)
  • 原文地址:https://www.cnblogs.com/cf532088799/p/8330697.html
Copyright © 2011-2022 走看看