zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    charles 安装、破解、简单介绍
    8、postman中 转码生成python-requests接口请求代码,并定义一个获取及请求的方法
    json 序列化和反序列化(针对python数据类型)
    leetcode 35.搜索插入位置
    leetcode 27.移除元素
    js 中的数组方法
    js判断小数点后几位小数
    leetcode 15.三数之和
    leetcode 1.两数之和
    leetcode 680.验证回文字符串
  • 原文地址:https://www.cnblogs.com/chyuanliu/p/7991126.html
Copyright © 2011-2022 走看看