天天看点

rsync详解

一、rsync是什么?

rsync远程同步数据的一个命令,而且支持增量备份,解释:A机器和C机器考备过一次,A机器上的数据发生了改变,再次将A机器考备到C机器,它不会覆盖 原有的数据,只会增加A与C之间不同的地方。

二、rsync选项?

-a==r(针对目录,归档)

        l(保留软链接文件)

例如:

<a href="https://s3.51cto.com/wyfs02/M00/8F/7B/wKioL1jgjTeSH1zeAAALhQ2cgfo766.png-wh_500x0-wm_3-wmp_4-s_2681858340.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M01/8F/7D/wKiom1jgjTij117rAAAKLImNWuA467.png-wh_500x0-wm_3-wmp_4-s_2418672791.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M01/8F/7B/wKioL1jgjTiiprTXAAAWVO5zWLc110.png-wh_500x0-wm_3-wmp_4-s_3928909393.png" target="_blank"></a>

        p(读写执行,权限)

        t(时间)

         g(属组)

         o(属主)

         D(设备文件)

-v可视化

-P显示同步时的百分比

--delete 强制保持文件的一致性,源是什么,目标就是什么。

--exclude==*.log不要后缀为.log的文件

-L rsync可以在同步的时候把软链接对应的源文件拉过来

-u 允许目标机器上的新文件 。A机器copy到C机器,C机器上的数据就需要一些改动

-z  压缩

三、具体用法?

拉,远程的数据到本地:rsync -av 192.168.11.190:/tmp/1.txt    /tmp

推,本地的数据到远程:rsync -av /tmp/1.txt   192.168.11.190:/tmp

四、以daemon方式启动rsync

日志文件为,var/log/rsync.log(排错去找)

搭建过程:服务器端192.168.8.102

a.创建配置文件,且修改配置文件

[root@Herry ~]# vim /etc/rsyncd.conf

port=8730

log file=/var/log/rsync.log

pid file=/var/run/rsync.pid

[test]

path=/tmp/rsync         

use chroot=no

max connections=4

read only=no

list=true

uid=aop

gid=aop

auth users=wenwen

secrets file=/etc/rsyncd.passwd

hosts allow=192.168.8.101

path:是推送文件的路径,

use chroot:是把远程用户限制规定的目录内,即/tmp/rsync中,如果使用-L同步软链接的源文件,而源文件又在/etc目录下(非tmp/rsync目录),use chroot=yes,则无法使用L选项;

max connection:最大连接数;

read only只读;

list是否要将模块名test列出来;

uid属主,后面红色的有详细介绍;

gid属组,后面红色的有详细介绍;

auth user 验证用户名,作连接用;

secrets file密码文件;

hosts allow允许哪些主机IP连接;

b.启动一个守护进程,且查看进程是否生成

     [root@Herry ~]# rsync --daemon

      [root@Herry ~]# ps aux | grep rsync

       root      8129  0.2  0.0 107624   552 ?        Ss   00:05   0:00 rsync --daemon

       root      8135  0.0  0.0 103260   848 pts/0    S+   00:06   0:00 grep rsync

c.创建/tmp/rsync

[root@Herry ~]# mkdir /tmp/rsync

[root@Herry ~]# touch /tmp/rsync/1.txt

[root@Herry ~]# echo "asdsa" &gt; /tmp/rsync/1.txt

d.在服务端192.168.8.101上创建密码文件

vim /etc/rsyncd.passwd

wenwen:l426844  wenwen是验证帐号,l426844是验证密码。

e.给密码文件设置权限:chmod 400  /etc/rsyncd.passwd

f.客户端192.168.8.101验证,将服务器上的1.txt,拉取过来,其中--port指的是与服务器端的8730端口连接,默认是tcp 873端口,因为在服务器端中的配置文件/etc/rsyncd.conf中指定过。

[root@wenwen ~]# rsync -avzP --port 8730 [email protected]::test/1.txt ./

Password:

receiving incremental file list

1.txt

           6 100%    5.86kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 75 bytes  received 144 bytes  39.82 bytes/sec

total size is 6  speedup is 0.03

[root@wenwen ~]# ls

123      1.txt    2.txt  anaconda-ks.cfg  install.log         公共的  视频  文档  音乐

123.txt  234.txt  9.txt  cisco            install.log.syslog  模板    图片  下载  桌面

五、部分参数剖析

/etc/rsyncd.conf中UID和GID意义:

针对客户端往服务器上的拉取和推送等操作,在服务器上的/tmp/rsync/下看传过来的文件属主:

1.服务器端如果是root,则同步过来的就跟客户端的属主属组保持一致,如果在服务器端本地没有创建客户端的文件属主属组,则直接用数字替补(跟客户端的UID和GID一样的数字),用id查询UID和GID哦!

2.服务器端如果是非root,则同步过来的文件属主和属组就是服务器端指定的UID和GID

本文转自飞奔的小GUI博客51CTO博客,原文链接http://blog.51cto.com/9237101/1912163如需转载请自行联系原作者

ziwenzhou