介绍:
cp只能对本地文件的复制
wget是对远程文件进行复制
remote sync:
可以镜像保存整个目录树和文件系统
可以增量同步数据
可以保留原文件的权限、时间等属性
加密传输数据
可以使用rcp\ssh等方式传输文件(也可直接通过socket传输)
支持匿名传输
用于替代rcp的一个工具,rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时rsync server会开一个873端口,等待客户端去连接,连接时,rsync server会检查口令是否相符,若通过口令查核,则可以通过进行文件传输,第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份;
四种模式:
1、本地模式
复制包括license目录
rsync -av license /tmp
复制包括license目录下内容
rsync -av license/ /tmp
2、远程模式(使用ssh执行底层连接和加密传输)
本地复制到远程test目录下
rsync -av license 192.168.1.2:test
3、查询模式(与ls命令实现的功能类似)
查看本地文件
rsync -a 192.168.1.2:test
4、服务器模式(平常说的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