cp只能对本地文件的复制bash
wget是对远程文件进行复制服务器
remote sync:ssh
能够镜像保存整个目录树和文件系统socket
能够增量同步数据工具
能够保留原文件的权限、时间等属性ui
加密传输数据加密
可使用rcp\ssh等方式传输文件(也可直接经过socket传输)spa
支持匿名传输code
用于替代rcp的一个工具,rsync能够经过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时rsync server会开一个873端口,等待客户端去链接,链接时,rsync server会检查口令是否相符,若经过口令查核,则能够经过进行文件传输,第一次连通完成时,会把整份文件传输一次,之后则就只需进行增量备份;server
一、本地模式
复制包括license目录
rsync -av license /tmp
复制包括license目录下内容
rsync -av license/ /tmp
二、远程模式(使用ssh执行底层链接和加密传输)
本地复制到远程test目录下
rsync -av license 192.168.1.2:test
三、查询模式(与ls命令实现的功能相似)
查看本地文件
rsync -a 192.168.1.2:test
四、服务器模式(日常说的rsync服务器就是这种,属于C/S模式)
rsync在后台启动一个守护进程,这个守护进程在服务端永久运行,用于接收文件传输请求。客户端能够把文件传输给守护进程,也能够向守护进程请求文件。
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
归档模式,以递归方式传输文件,并保持全部文件的属性
-v, --verbose increase verbosity
输出详细信息模式
服务端配置
#默认没有rsyncd.conf文件,须要手动建立
/etc/rsyncd.conf配置内容:
uid=nobody gid=nobody use chroot=no max connections=20 strict modes=yes pid file=/var/run/rsyncd.pid lock file=/var/run/rsync.lock log file=/letv/rsync/log/rsyncd.log [log_8281] path=/data/log/report8281 comment=8281 log file ignore errors read only=no hosts allow=10.110.144.177 10.110.144.178 hosts deny=* list=false uid=root gid=root auth users=backup secrets file=/etc/backupserver.pass [log_8282] path=/data/log/report8282 comment=8282 log file ignore errors read only=no hosts allow=10.110.144.177 10.110.144.178 hosts deny=* list=false uid=root gid=root auth users=backup secrets file=/etc/backupserver.pass
backupserver.pass为密码文件,内容:backup:password(注意:chmod 600 backupserver.pass)
注:backupserver.pass中backup为用户名,和rsyncd.conf中的auth users保持一致
启动rsync服务端(守护进程):
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf #指定配置文件,能够不指定 --prot=873 #指定监听端口,能够不指定;若是指定不为873,客户端链接时须要带上参数--port=指定端口号
若是要开机启动rsync,把/usr/local/rsync –daemon加入文件/etc/rc.local
客户端配置
建立backupserver.pass文件,内容为服务端配置访问帐户的密码
cat backupserver.pass password
从服务端拉取文件:
rsync -a backup@10.127.92.181::log_8281/sdk-report-2017-12-21.log.gz /data/ --password-file=/etc/backupserver.pass
同步目录:
rsync -a backup@10.127.92.181::log_8282 /data --password-file=/etc/backupserver.pass
上传文件:
rsync -a /data/sdk-report-2017-12-21.log.gz backup@10.127.92.181::log_8281 --password-file=/etc/backupserver.pass
注:
backup为服务器端rsyncd.conf中配置的访问帐户;
ip为服务端服务器ip;
log_8281为rsyncd.conf中配置的受权id;
log_8281能够跟目录;
同步log脚本:
#!/bin/bash myTime=$1 if [ -z $myTime ];then myTime=`date +'%Y-%m-%d' -d "-1 day"` fi #获取IP ip=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"` #上传文件并重命名文件,加上ip后缀。${ip##*.}为获取ip最后一个.以后的数字 #这么作是为了集群部署上传的log名称不会冲突 rsync -a /logs/mstore.log.$myTime backup@10.127.92.181::log_8281/log/mstore_${ip##*.}.log.$myTime --password-file=/etc/backupserver.pass --port=8088