zoukankan      html  css  js  c++  java
  • rsync

    什么是rsync

    rsync一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。

    三种主要的传输数据的方式

    1. 单个主机本地之间的数据传输

    2. 借助rcp, ssh等通道来传输数据

    3. 以守护进程(socket)的方式传输数据(需要服务端客户端配合, centos中自带了客户端)

    单个主机本地之间的数据传输:

    #将a目录内容同步到b目录
    rsync -r a b
    
    #将/etc/hosts文件复制到/tmp/目录下
    rsync /etc/hosts /tpm/

    借助ssh通道来传输数据:

    #将a目录下内容复制到远程主机的~/b目录下
    rsync -r a/ -e 'ssh -p 22' huangxm@192.168.0.138:~/b
    
    #将目录a复制到远程主机的~/b目录下,注意与上面的区别
    rsync -r a -e 'ssh -p 22' huangxm@192.168.0.138:~/b

    它相当与scp命令,同时也需要手动输入密码;如果不想手动输入密码,可以使用sshpass, 这样我们就可以写入crontab,做到定时同步

    #安装sshpass
    yum install -y sshpass
    
    #同步目录a和远程主机的目录b
    rsync -r a/ -e 'sshpass -pgoitinfo ssh -p22' huangxm@192.168.0.138:~/b

    常用参数

    -v    详细模式输出,给出传输进度等信息

    -z    压缩传输  --compress-level=NUM  指定压缩级别 1-9, 9是最大压缩级别

    -a    以归档方式传输,保留文件属性

            -r    递归传输

            -t    保持文件时间信息

            -o    保持文件属主信息

            -p    保持文件权限

            -g    保持文件属组信息

            -P    显示同步过程及进度等信息

            -D    保持设备文件信息

            -l      保持软链接

            这些参数加起来等于 –a

    -e    使用的信道协议,如ssh

    --exclude=PATTERN    指定排除不需要传输的文件

    --exclude-from=FILE    排除FILE中记录的文件

    --delete   保证两边数据完全一样,如果源里没有该文件,就在目标目录删除

    说明:

    -avz  相当于 –vzrtopgDl

    生产环境中常用: –avz 或 –vzrtopg

    守护进程模式:

    安装服务端:

    #yum install rsync

    配置文件:/etc/rsyncd.conf

    vim /etc/rsyncd.conf
    uid = rsync                        #用户id
    gid = rsync
    use chroot = no                    #安全性,内网一般不考虑,设为no
    max connections = 200              #最多有多少个客户端连接我
    timeout = 300                      #超时时间,秒
    pid file = /var/run/rsyncd.pid     #pid文件
    lock file = /var/run/rsync.lock    #传输时会给文件加锁
    log file = /var/log/rsyncd.log     #日志文件
    [test]                             #模块
    path = /test/                      #客户端来同步,就是同步该目录
    ignore errors                      #传输过程中遇到错误,自动忽略
    read only = false                  #可读可写
    list = false                       #不允许列表
    hosts allow = 10.0.0.0/24          #允许的IP段
    hosts deny = 0.0.0.0/32            #拒绝
    auth users = rsync_backup          #这是个虚拟用户
    secrets file = /etc/rsync.password #虚拟用户对应的密码文件

    创建系统用户rsync用来启动服务

    useradd rsync -s /sbin/nologin
    授权
    chown -R rsync.rsync /test

    在/etc/rsync.password中添加虚拟用户

    echo "rsync_backup:1234" > /etc/rsync.password

    用户名和密码用:分隔。

    设置权限密码文件权限

    chmod 600 /etc/rsync.password

    启动服务端, 以守护进程方式

    #rsync --daemon

    端口: tcp 873

    添加开机启动

    echo "/usr/bin/rsync --daemon" >> /etc/rc.local

    客户端:

    客户端只需要密码文件,文件里只存放密码:

    echo "1234" > /etc/rsync.password

    设置文件权限:

    chmod 600 /etc/rsync.password

    从服务端拉取文件:

    rsync -avz rsync_backup@10.0.0.7::/test /data --password-file=/etc/rsync.password

    注意:test是指test模块,也就是服务端配置文件中的[test];而且有两个冒号。

    或者使用rsync协议

    rsync -avz rsync://rsync_backup@10.0.0.7/test  /data --password-file=/etc/rsync.password

    往服务端推送文件:

    rsync -avz /data/ rsync_backup@10.0.0.7::/test --password-file=/etc/rsync.password

    排除指定文件和目录

    排除文件a:

    rsync -avz --exclude=a /data/ rsync_backup@10.0.0.7::/test --password-file=/etc/rsync.password

    排除多个文件:

    rsync -avz --exclude={a,b} /data/ rsync_backup@10.0.0.7::/test --password-file=/etc/rsync.password

    也可以将要排除的文件和目录写入一个文件,一行一个:

    vim excefile.conf

    test.py
    *.log
    dir1

    使用—exclude-from

    rsync -avz --exclude-from=excefile.conf /data/ rsync_backup@10.0.07::/test --password-file=/etc/rsync.password

    在服务端设置要排除的文件:

    在配置文件中加上:

    exclude=a b c/d      #c/d是指c目录下的d

    重启:

    kill `cat /var/run/rsyncd.pid`

    rsync –daemon

    服务器端共享多个目录

    uid = rsync         #用户id
     gid = rsync
     use chroot = no     #安全性,内网一般不考虑,设为no
     max connections = 200    #最多有多少个客户端连接我
     timeout = 300     #超时时间,秒
     pid file = /var/run/rsyncd.pid     #pid文件
     lock file = /var/run/rsync.lock    #传输时会给文件加锁
     log file = /var/log/rsyncd.log     #日志文件
                           
     ignore errors     #传输过程中遇到错误,自动忽略
     read only = false   #可读可写
     list = false    #不允许列表
     hosts allow = 10.0.0.0/24   #允许的IP段
    hosts deny = 0.0.0.0/32     #拒绝
    auth users = rsync_backup     #这是个虚拟用户
    secrets file = /etc/rsync.password    #虚拟用户对应的密码文件
                            
    [test]       #模块
    path = /test/    #客户端来同步,就是同步该目录
    [data]
    path = /data/

    写配置文件时,尽量把相同的配置放到公共区域,自己特有的放到自己的模块下。

  • 相关阅读:
    deleteCustomer
    python入门day07——可变不可变类型、数字类型、字符串类型.md
    python入门day06——流程控制之if判断、while循环、for循环
    python入门day05——基本运算符、逻辑运算符
    python入门day04——基本数据类型、输入输出、基本运算符
    python入门day03——变量、内存管理:垃圾回收机制(GC)、常量
    python入门day03——python介绍、运行程序步骤
    python入门day02——计算机硬件、操作系统、编程语言
    python入门day01——01 计算机硬件组成与工作原理
    python入门作业day04 基本数据类型应用
  • 原文地址:https://www.cnblogs.com/huangxm/p/6044053.html
Copyright © 2011-2022 走看看