本文共 2971 字,大约阅读时间需要 9 分钟。
【背景】
rysnc的优点
1 可作为差异性传输 节省带宽和传输时间
2 可以作为服务运行 数据备份中心(运行在873端口)
3 作为服务的时候,rsyncd.conf的模块下的配置文件更改不需要要重启-daemon
[rsync的选项]
-a
-v
-z 传输过程中进行压缩,如果传递的是文件,图片压缩前后文件大小有很大的差异就可以加上!
-P
-L, --copy-links transform symlink into referent file/dir
-H --hard-links
--exclude=PATTERN exclude files matching PATTERN
常用1
rsync -avz
常用2
rsync -zvH
因为-a选项中没有保留硬连接所以需要-H参数
常用3
rsync -avH --delete-after --exclude='.~tmp~'
--delete-after
默认情况下,rsync是先清理目的端的文件再开始数据同步;如果使用此选项,则rsync会先进行数据同步,都完成后再删除那些需要清理的文件。
参考:
案例一: host1----> host2 ,两个主机之间不知道root密码,所以scp不方便,可以sudo到root但又不能更改root。此时两个主机之间copy就可以使用rsync了! 如果有定时任务copy rsync是最好的选择了。
host2 作为服务 运行,最简单的的/etc/rsyncd.conf 的配置文件编写
[root@log_server src]# cat /etc/rsyncd.conf
1 2 3 4 5 | [src] path=/usr/local/src read only = no uid = root gid = root |
作为服务运行rsync有两种方式
1: 独立运行
1 | rsync --daemon |
2: 寄托在xinetd服务下面
[cat /etc/xinetd.d/rsync | grep disa
disable = no
/etc/init.d/xinetd start启动即可
rsync监听端口873
host1将本地/usr/local/src下的文件 传递到host2的src模块下(即/usr/local/src下)
1 | rsync -avz /usr/local/src/php-5 .3.27. tar .gz 192.168.100.20::src |
注意:
1 这个传输过程这是不需要任何密码的
2 uid gid指定为root是因为写在/usr/local/src下面是需要root权限的
3 read only =no是因为默认是只读
4 作用只是把文件copy过去,目标端有文件则起到覆盖的作用(即同步)
案例二: 和案例一样,只不过是要认证密码的(注意是虚拟账号(rsync中的账号认证),和系统账号不是同一个) 并且把一些默认的配置参数到详细的写上和写在全局中,非模块下面
cat /etc/rsyncd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | port = 873 uid =root gid =root user chroot = no max connections = 20 timeout = 600 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/run/rsyncd.log [src] path=/usr/local/src ignore errors read only = no uid = root gid = root auth users= root secrets file = /etc/rsyncd.secrets |
编写rsync的账号密码文件
1 2 | cat /etc/rsyncd .secrets root:123456 |
更改权限(权限一定要是600)
1 | chmod 600 /etc/rsyncd .secrets |
传输文件
[root@slave src]# rsync -avz /usr/local/src/libmcrypt-2.5.8 root@192.168.100.20::src
Password:
或者使用指定密码文件,而非交互式的进行文件传输
首先编辑一个密码文件(权限一定要是600 其他人不可读,才能生效)
1 | cat /etc/rsyncd .password |
123456
1 | chmod 600 /etc/rsyncd .password |
密令进行传输到host2
1 | rsync -avz --password- file = /etc/rsyncd .password /usr/local/src/libmcrypt-2 .5.8 root@192.168.100.20::src |
[其他端口]
rsync -av --port=10873 vim/ dev-mon001::salt-base/vim
[排查目录/文件]
rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/ www@xxx-ctr001::salt-base/
rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/ www@xxx-db003::salt-base/
rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/ www@xxx-vctr001::salt-base/
rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/ www@xxx-mon001::salt-base/
注意:
1 如果rysnc --daemon的用xinted托管的话,如果改变监听的端口一定要改变 /etc/service中的rsync默认端口,否则是不生效的,无论你是写在 /etc/rsyncd.conf中或者其他地方
本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1786217如需转载请自行联系原作者
cuizhiliang