Linux8.6 rsync

rsync工具介绍

  从A机器到B机器,备份数据到远程,也可以实现从本机到本机类似cp。

  把A目录拷贝到B目录,且A目录一直在更新。使用rsync可以实现增量的拷贝。更新有变更的文件。也可以实现远程同步更新。

  第一个为本机到本机。第二个为本机到远程。

[root@chyuanliuNJ system]# rsync -av /etc/passwd /tmp/2.txt
sending incremental file list
passwd

sent 1315 bytes  received 31 bytes  2692.00 bytes/sec
total size is 1241  speedup is 0.92
[root@chyuanliuNJ system]# rsync -av /etc/passwd root@172.16.252.69:/tmp/12.txt
The authenticity of host '172.16.252.69 (172.16.252.69)' can't be established.
ECDSA key fingerprint is 20:5e:a4:de:c6:7e:df:f7:b8:a3:2c:da:11:a2:18:8a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.252.69' (ECDSA) to the list of known hosts.
root@172.16.252.69's password:
sending incremental file list
passwd

sent 1315 bytes  received 31 bytes  69.03 bytes/sec
total size is 1241  speedup is 0.92

  注意:双冒号和单冒号不同

rsync [OPTION]... SRC DEST 
rsync [OPTION]... SRC [USER@]host:DEST 
rsync [OPTION]... [USER@]HOST:SRC DEST 
rsync [OPTION]... [USER@]HOST::SRC DEST 
rsync [OPTION]... SRC [USER@]HOST::DEST 
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

  对应于以上六种命令格式,rsync有六种不同的工作模式:

  拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup

  使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src

  使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data

  从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack

  从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www

  列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www

rsync常用选项

-a   包含 -rtplgoD
-r   同步目录时要加上,类似cp时的-r选项
-v   同步时显示一些信息,让我们知道同步的过程
-l   保留软链接
-L   加上该选项后,同步软链接时会把源文件给同步
-p   保持文件的权限数学
-o   保持文件的属性
-g   保持文件的属组
-D   保持设备文件信息
-t   保存文件的时间属性
--delte    删除DEST中SRC没有的文件
--exclude    过滤指定文件,如 --exclude  “logs” 会把文件名包含logs的文件或者目录过滤掉,不同步
-P   显示同步过程,比如速率,比-v更加详细
-u    加上该选项后,如果DEST中的文件比SRC新,则不同步
-z     传输时压缩

   同步目录

[root@chyuanliuNJ ll]# rsync -av /sy/ /ll/
sending incremental file list
./
1.txt

sent 82 bytes  received 34 bytes  232.00 bytes/sec
total size is 0  speedup is 0.00

   过滤某些文件,不支持连写,但是可以写多个

rsync -avL --exclude  "*.txt" --exclude  "chy*" /root/111/   /tmp/111/

   -l选项,仅仅拷贝软链接,不拷贝软连接源文件

[root@chy002 111]# rsync -avl /root/111/ /tmp/111_d
sending incremental file list
./
1.txt
shadow_ln.txt -> /root/shadow.txt

sent 170 bytes  received 37 bytes  414.00 bytes/sec
total size is 50  speedup is 0.24
[root@chy002 111]# ls -ls /tmp/111_d/
总用量 4
4 -rw-r--r-- 1 root root 34 1月  30 05:49 1.txt
0 lrwxrwxrwx 1 root root 16 1月  30 05:51 shadow_ln.txt -> /root/shadow.txt

  -L拷贝了源文件,可以看文件大小不同

[root@chy002 111]# rsync -avL /root/111/ /tmp/111_d
sending incremental file list
shadow_ln.txt

sent 1223 bytes  received 31 bytes  2508.00 bytes/sec
total size is 1144  speedup is 0.91
[root@chy002 111]# ls -ls /tmp/111_d/
总用量 8
4 -rw-r--r-- 1 root root   34 1月  30 05:49 1.txt
4 ---------- 1 root root 1110 1月  30 05:50 shadow_ln.txt

  --delete删除目标文件夹里多的东西

[root@chy002 111]# touch /tmp/111_d/2205.txt
[root@chy002 111]# rsync -av --delete /root/111/ /tmp/111_d/
sending incremental file list
./
deleting 2205.txt

sent 90 bytes  received 15 bytes  210.00 bytes/sec
total size is 78  speedup is 0.74

rsync通过ssh同步

  rsync通过ssh方式同步, -e 接命令,  ssh -p 指定端口

  rsync  -av   test1/    192.168.133.132:/tmp/test2/

  rsync  -av   test1/   -e   "ssh  -p  22"  test1/192.168.133.132:/tmp/test2/

 

  rsync通过服务的方式同步

  

  要编辑配置文件   /etc/rsyncd.conf

  启动服务  rsync   --daemon

  格式:    rsync   -av   test1/    192.168.133.130::module/dir/

 

rsync通过服务同步

  需要编辑配置文件  /etc/rsyncd.conf  

[root@chy002 ~]# cat /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area
# 下面重新加的
port=873    #指定在哪个端口启动rsyncd服务,默认873。如果更改端口,命令中需要加--port 端口   选项
log file=/var/log/rsync.log         #指定日志文件
pid file=/var/run/rsyncd.pid      #指定pid文件,作用设计服务的启动、停止等进程管理操作
address=192.168.212.130      #指定启动rsyncd服务的IP,如果你机器有多个IP,可以指定一个,不指定则默认全部IP上启动
[test]      #指定模块名字,在命令中会用到
path=/tmp/rsync     #指定数据存放的路径,命令中 模块的意思就是该路径
use chroot=true     #表示在传输文件前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true,如果你的数据当中有软连接文件,建议设置成false。
max connections=4   #指定最大的连接数,默认是0,即没有限制。
read only=false   #如果为true,则不能上传到该模块指定的路径下。
list=true      #表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏。
uid=root   #指定传输文件时以哪个用户/组的身份传输。
gid=root
auth users=test     #指定传输时要使用的用户名。
secrets file=/etc/rsyncd.passwd       #指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意该密码文件的权限一定要是600。格式:用户名:密码
hosts allow=192.168.212.22 1.1.1.1 2.2.2.2  192.168.133.0/24   #示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用空格隔开。 

#当设置了auth users和secrets file后,客户端连服务端也需要用用户名密码了,若想在命令行中带上密码,可以设定一个密码文件。service端密码文件格式 名字:密码  
#这样在客户端同步数据,需要输入service密码文件里面的用户密码
rsync -avL test@192.168.133.130::test/test1/  /tmp/test8/ 

如果嫌麻烦,可以在客户端也写一个密码文件,不用手动输入密码
rsync -avL test@192.168.133.130::test/test1/  /tmp/test8/ --password-file=/etc/pass 
#其中/etc/pass内容就是一个密码,内容为  密码 ,权限要改为600。此为客户端文件

  

  然后启动服务  rsync  --daemon ,如果更改配置文件路径的话,启动服务时需要加 --configfile=路径

  命令格式,如下。在使用过程中可能会因为iptables规则而限制不能使用telnet链接端口,记得关掉firewalld和Iptables服务。

  rsync服务日志如下,存在与service端

[root@chy002 dst]# cat /var/log/rsync.log
2018/02/02 05:15:03 [1889] rsyncd version 3.0.9 starting, listening on port 873
2018/02/02 05:59:08 [2038] name lookup failed for 192.168.212.22: Name or service not known
2018/02/02 05:59:08 [2038] connect from UNKNOWN (192.168.212.22)
2018/02/02 05:59:16 [2039] name lookup failed for 192.168.212.22: Name or service not known
2018/02/02 05:59:16 [2039] connect from UNKNOWN (192.168.212.22)
2018/02/02 05:59:19 [2039] auth failed on module test from unknown (192.168.212.22): unauthorized user
2018/02/02 05:59:23 [2040] name lookup failed for 192.168.212.22: Name or service not known
2018/02/02 05:59:23 [2040] connect from UNKNOWN (192.168.212.22)
2018/02/02 05:59:24 [2040] auth failed on module test from unknown (192.168.212.22): unauthorized user
2018/02/02 06:00:41 [2056] name lookup failed for 192.168.212.22: Name or service not known
2018/02/02 06:00:41 [2056] connect from UNKNOWN (192.168.212.22)
2018/02/01 22:00:41 [2056] rsync to test/dst/ from unknown (192.168.212.22)
2018/02/01 22:00:41 [2056] receiving file list
2018/02/01 22:00:41 [2056] created directory /dst
2018/02/01 22:00:41 [2056] ./
2018/02/01 22:00:42 [2056] sent 84 bytes  received 202 bytes  total size 84

  

 

posted @ 2017-12-06 09:38  chyuanliu  阅读(174)  评论(0编辑  收藏  举报