Linux之rsync

rsync工具介绍

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

语法:rsync [option] SRC DEST

本地同步:rsync -av SRC DEST

远程同步: rsync -av SRC user@ip:DEST

常用选项

  • -a:包含-rtplgoD几个选项
  • -r:同步目录时使用,类似 cp -r用法
  • -v:可视化,同步时显示一些信息,让我们知道同步过程
  • -l:保留软链接
  • -L:同步软链接时将源文件一起同步
  • -p:保持文件权限
  • -o:保持文件属主
  • -g:保持文件属组
  • -D:保持设备文件信息
  • -t:保持文件时间属性
  • --delte:删除DEST中SRC里面没有的文件
  • --exclude:过滤指定文件;比如--include "logs",会将文件名包含logs的文件或者目录过滤掉,不同步
  • -P:显示同步过程,比如速率等,比-v更详细
  • -u:如果DEST中的文件比SRC中的文件更新,则不同步
  • -z:同步时压缩
  • --port:指定传输端口

rsync应用(通过ssh方式同步)

背景:A机(192.168.101.130)和B机(192.168.101.132)之间可以互相通信,并且都安装了rsync。

  • rsync -av test1/ 192.168.101.132:/tmp/test2/:将A机/test1/目录同步到B机/tmp/test2/.

  • rsync -avP 192.168.101.132:/tmp/test2/ /tmp/test1/:也可以从B机同步到A机

  • rsync -av -e "ssh -p 22" test/ 192.168.101.132:/tmp/test2/:指定通过22端口同步


rsync通过服务同步

背景:A机(192.168.101.130)和B机(192.168.101.132)之间可以互相通信,并且都安装了rsync。

  • 编辑配置文件·/etc/rsyncd.conf

rsyncd.conf 样例(服务端):

port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.101.130
[test]
path=/tmp/rsync 
use chroot=true
max connection=4
read only=no
list=true
uid=root
gid=root
auth users=test
secrets file=/etc/rsyncd.passwd
host allow=192.168.101.132
port:指定启动rsync的端口
log file:指定日志文件
pid file:指定pid文件;这个文件涉及服务启动,停止等进程管理操作
address:指定启动rsync服务的ip;如果不指定,则默认本机所有ip上启动
[test]:模块名(自定义)
path:数据存放路径(需要先创建一个目录)
use chroot:传输文件之前先chroot到path参数指定的路径下;默认为true,当数据中有软链接时,建议设置为false
max connection:最大连接数(0表示无限制)
read only:参数为true时则无法写入到服务端,不能上传到指定路径下;false则相反
list:决定在用户查找服务器上可用的模块时是否被列出(true表示列出,false表示隐藏)
uid:指定传输文件时以哪个用户的身份进行
gid:指定传输文件时以哪个组的身份进行
auth users:指定传输时要使用的用户的用户名
secrets file:指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证;(该密码文件权限一定要是600.格式为"user:password")
host allow:指定被允许连接该模块的主机(可以是ip或ip段,如果有多个,中间由空格隔开)

当设置了auth users 和 secrets file 后,客户端连接服务器也需要用户名密码了,若想命令行中带上密码,可以指定一个密码文件:

rsync -avL test@192.168.101.130::test/test1/ /tmp/test3/ --password-file=/etc/pass

其中/etc/pass内容就是一个密码,权限为600

rsync --port=873 192.168.101.130(服务器ip):::查询可用的模块

  • 启动服务
    rsync --daemon
  • 检查是否已启动
    pa -aux |grep rsync
[root@localhost .ssh]# rsync --daemon
[root@localhost .ssh]# ps -aux |grep rsync
root      2780  0.0  0.0 114644   564 ?        Ss   22:32   0:00 rsync --daemon
root      2782  0.0  0.0 112664   968 pts/1    S+   22:33   0:00 grep --color=auto rsync
  • 检查监听端口
[root@localhost .ssh]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      952/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1535/master         
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2780/rsync          
tcp6       0      0 :::22                   :::*                    LISTEN      952/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1535/master         
tcp6       0      0 :::873                  :::*                    LISTEN      2780/rsync
  • 同步格式:rsync -av test1/ 192.168.101.132::module/dir

telnet ip 端口:检查一个端口是否连通,Ctrl+u --> i 退出;如果失败,检查iptables,firewalld


posted @ 2017-09-22 22:28  指环王Raul  阅读(207)  评论(0编辑  收藏  举报