zoukankan      html  css  js  c++  java
  • rsync定时同步配置

    rsync定时同步配置

    rsync定时同步配置

    1. rsync简述:

    rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。可以很容易做到保持原来文件的权限、时间、软硬链接等等。无须特殊权限即可安装。快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

    2. rsync语法

      Local:  rsync [OPTION...] SRC... [DEST]
    
           Access via remote shell:
             Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
             Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
    
           Access via rsync daemon:
             Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
                   rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
             Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
                   rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

    rsync 在本地进行推送的话类似于cp命令,远程推送类似于scp,例如把本机的/etc/hosts文件推送到/tmp
    rsync -avz /etc/hosts /tmp/
    rsync -avz /etc/hosts root@172.16.50.1:/tmp/
    --delete 目标目录内容与源目录内容保持一致,前面有的,后面可以有,前面没有的,后面的必须删除,如:
    rsync -avz --delete /test/ /tmp

    通过ssh加密通道推送文件有

    [root@server ~]# rsync -avz -e 'ssh -p 22' sersync2.5.4_64bit_binary_stable_final.tar.gz root@192.168.50.4:/tmp/
    root@192.168.50.4's password: 
    sending incremental file list
    
    sent 70 bytes  received 12 bytes  32.80 bytes/sec
    total size is 727290  speedup is 8869.39

    通过ssh加密通道拉取文件

    [root@server ~]# rsync -avz -e 'ssh -p 22' root@192.168.50.4:/tmp/sersync2.5.4_64bit_binary_stable_final.tar.gz /tmp/  
    root@192.168.50.4's password: 
    receiving incremental file list
    sersync2.5.4_64bit_binary_stable_final.tar.gz
    
    sent 30 bytes  received 727651 bytes  161706.89 bytes/sec
    total size is 727290  speedup is 1.00
    [root@server ~]# ls -l /tmp/ |grep ser*
    -rw-r--r--. 1 root  root  727290 May 21  2018 sersync2.5.4_64bit_binary_stable_final.tar.gz

    3. 参数详解

    1. -avz =vzrtopjDl ,基本上保持了原有文件的各项属性
    2. P :显示推送过程
    3. -e:使用信道协议
    4. --exclude=PATTERN:排除不需要同步的文件,可以用通配符匹配
    5. --exclude-from=file:把需要排除的文件写在文件列表中,通过这个参数可以排除这些列表上的文件

    4. rsync 的daemon模式

    平时如果不用daemon模式也可以随便的进行传输,但是需要输入密码,如果利用ssh key进行弄则系统可能不安全,不利于全网备份,因此最好的解决方案就是利用rsync的daemon模式来解决rsync推送需要密码的问题。

    1. 先查看rsync服务端和客户端的rsync版本,以及系统版本,内核版本,确认好环境问题
    [root@rsync-client ~]# uname -r
    2.6.32-696.23.1.el6.x86_64
    [root@rsync-client ~]# uname -m
    x86_64
    [root@rsync-client ~]# cat /etc/redhat-release
    CentOS release 6.9 (Final)
    [root@rsync-client ~]# rsync --version
    rsync  version 3.0.6  protocol version 30
    [root@rsync-server ~]# uname -r
    2.6.32-696.23.1.el6.x86_64
    [root@rsync-server ~]# uname -m
    x86_64
    [root@rsync-server ~]# cat /etc/redhat-release
    CentOS release 6.9 (Final)
    [root@rsync-server ~]# rsync --version
    rsync  version 3.0.6  protocol version 30
    1. rsync配置服务端的配置文件
      rsync的配置文件为/etc/rsyncd.conf,默认不存在需要自己手动创建。
    touch /etc/rsyncd.conf
    在该配置文件中添加如下内容:
    # rsyncd-conf start 
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 2000
    timeout = 600
    pid file= /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    ignore = errors
    read only = false
    list = false
    hosts allow = 192.168.50.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync-backup
    secrets file = /etc/rsync.password
    #####################################
    [backup]
    comment = backup
    path = /backup
    1. 依据配置文件创建备份目录,创建密码文件,创建rsync用户,并把备份目录的属主和属组赋给rsync,如:
    [root@rsync-server ~]# useradd -g rsync -M -s /bin/nologin rsync
    [root@rsync-server ~]# grep "rsync" /etc/passwd
    rsync:x:506:506::/home/rsync:/sbin/nologin
    [root@rsync-server ~]# mkdir /backup
    [root@rsync-server /]# chown -R rsync.rsync /backup
    [root@rsync-server data]# echo "rsync-backup:root" >/etc/rsync.password
    [root@rsync-server data]# chmod 600 /etc/rsync.password 
    [root@rsync-server data]# ls -l /etc/rsync.password 
    -rw-------. 1 root root 18 May 10 21:57 /etc/rsync.password
    1. 开启rsync服务,并确认服务已启动
     rsync --daemon
    echo "rsync --daemon" >>/etc/rc.local
    [root@rsync-server /]# netstat -lntup |grep rsync
    tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1351/rsync          
    tcp        0      0 :::873                      :::*                        LISTEN      1351/rsync          
    [root@rsync-server /]# lsof -i :873
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    rsync   1351 root    3u  IPv4  12638      0t0  TCP *:rsync (LISTEN)
    rsync   1351 root    5u  IPv6  12639      0t0  TCP *:rsync (LISTEN)
    [root@rsync-server /]# 
    1. 在客户端创建密码文件,以及创建rsync用户,如:
    [root@rsync-client data]# echo "root" >>/etc/rsync.password
    [root@rsync-client data]# chmod 600 /etc/rsync.password 
    [root@rsync-client data]# ls -l /etc/rsync.password 
    -rw-------. 1 root root 5 May 14 20:44 /etc/rsync.password
    1. 从客户端推送文件过来测验:
    [root@rsync-client data]# rsync -avzP /data/file rsync-backup@192.168.50.4::backup/ --password-file=/etc/rsync.password 
    sending incremental file list
    
    sent 50 bytes  received 8 bytes  116.00 bytes/sec
    total size is 6  speedup is 0.10

    5. rsync如果无法推送的排错思路

    1. 查看rsyn服务配置文件路径是否正确,正确的路径为/etc/rsyncd.conf
    2. 查看配置文件里的host.allowyu与host.deny允许的ip网段是否是yunx允许客户端访问的网段或者ip
      3.查看配置文件里的path参数的路径qua权限是否zheng正确
      4.查看rsync服务是否正常启动
      5.查看iptables和selinux是否有锁阻止
      6.查看密码文件格式以及权限是否zheng正确,且客户端的密码文件的密码是否服务端的可以对应

    6. rsync的注意事项:

    1. 无差异同步参数--delete :请确认考虑风险后再操作,如:
    rsync -avz --delete rsync:://rsync-backup@192.168.50.4/backup  /tmp/ --password-file=/etc/rsync.password
    1. rsync的缺点:如果有大量小文件同步的时候比对时间比较长,有时候rsync进程会停止,解决办法:打包同步
    2. 同步大文件有时候也会出现中断,未完成之前是隐藏文件,解决办法:使用增量备份同步,集中备份

    7. 利用rsync进行全网定时备份

    如果全网有很多机器,每个机器上都有很多各种各样的重要的配置文件,以及其他的重要的文件数据需要进行定时备份,我们可以用一台服务器安装rsync daemon ,这样其他机器都把重要的数据往备份服务器这里推送,进行全网备份,比如每天凌晨2点进行备份一次,解决方案可以利用脚本和cron进行定时备份。

    1. 先抓取机器的ip,这样可以把各个机器备份的内容按ip建文件夹进行保存,这样也容易区分
    [root@rsync-client /]# ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'
    192.168.50.1
    1. 书写sync脚本,并将脚本分发到各个主机,假如同步每台机器的/etc/rc.local及/var/spool/cron/root如:
    bash
    #!/bin/sh
    dir="`ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'`_$(date +%F)"
    path=/backup
    mkdir $path/$dir -p &&
    /bin/cp /var/spool/cron/root $path/$dir/cron_root_$(date +%F)/ &&
    /bin/cp /etc/rc.local $path/$dir/rc.local_$(date +%F)/ &&
    rsync -az $path rsync-backup@192.168.50.4::backup/ --password-file=/etc/rsync.password
    1. 设置定时任务
      echo "0 2 * * *  sh /service/scripts/bak.sh >/dev/null" >>/var/spool/cron/root
  • 相关阅读:
    groovy的效率问题
    强大的模板引擎开源软件NVelocity
    每个人应该知道的NVelocity用法
    NVelocity语法常用指令
    CS0016: 未能写入输出文件“c:WINDOWSMicrosoft.NETFramework.。。”--“拒绝访问
    C# 数组基础知识
    c#中的 数组
    网络编程之webclient和httpwebrequest的使用
    HttpWebRequest和WebClient的区别
    C#如何使用SplitContainer控件实现上下分隔
  • 原文地址:https://www.cnblogs.com/chacha51/p/11217298.html
Copyright © 2011-2022 走看看