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
    2. rsync的缺点:如果有大量小文件同步的时候比对时间比较长,有时候rsync进程会停止,解决办法:打包同步
    3. 同步大文件有时候也会出现中断,未完成之前是隐藏文件,解决办法:使用增量备份同步,集中备份

    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如:
    #!/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
  • 相关阅读:
    Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源
    Spring Boot 如何给微信公众号返回消息
    Spring Boot2 系列教程(十九)Spring Boot 整合 JdbcTemplate
    Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置
    Spring Boot 开发微信公众号后台
    Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
    Spring Boot2 系列教程(十六)定时任务的两种实现方式
    Spring Boot2 系列教程(十五)定义系统启动任务的两种方式
    Spring Boot2 系列教程(十四)CORS 解决跨域问题
    JavaScript二维数组
  • 原文地址:https://www.cnblogs.com/chacha51/p/13764845.html
Copyright © 2011-2022 走看看