MENU

配置rsync实现同步备份

• 2019 年 07 月 26 日 • 161 人围观 • 笔记

1.系统环境

服务端:CentOS7_64(192.168.178.46)

客户端:CentOS7_64(192.168.0.146)

2.目的

利用crontab和rsync,自动将服务端下的/home/backup备份到客户端的/home/backup/192_168_178_46目录下

3.配置服务端(192.168.178.46)

  1. 安装rsync

    yum -y install rsync
  2. 在/etc/目录下创建rsyncd/目录,在该目录下创建相关配置文件并修改权限

/etc/rsyncd/
├── rsyncd.conf(rsync服务器配置文件)
├── rsyncd.motd(自定义用户登录后显示的服务器信息)
└── rsyncd.secrets(用户密码文件,客户端使用其中的账号密码访问,需要 600 权限)

mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf
touch /etc/rsyncd/rsyncd.secrets
touch /etc/rsyncd/rsyncd.motd
chmod 600 /etc/rsyncd/rsyncd.secrets
  1. 编辑rsyncd.conf配置文件

    uid = root
    gid = root
    use chroot = yes
    read only = yes
    write only = no
    max connections = 4
    port = 873
    
    pid file = /var/run/rsyncd.pid
    secrets file = /etc/rsyncd/rsyncd.secrets
    motd file = /etc/rsyncd/rsyncd.motd
    
    log file = /var/log/rsync.log    #rsync 服务器的日志;
    transfer logging = yes           #记录传输文件的日志
    log format = %t %a %m %f %b      #日志格式
    syslog facility = local3         #日志级别
    timeout = 900
    
    [backup]
            path = /home/backup
            auth users = rsync
            secrets file = /etc/rsyncd/rsyncd.secrets
  2. 编辑rsyncd.secrets文件,用户名和密码以冒号分隔,多个用户名和密码需要换行

    rsync:123456
  3. 编辑rsyncd.motd 登录公告,内容随意

    ++++++++++++++++++++++++++++++++++++
    +       rsyncd backup start        +
    ++++++++++++++++++++++++++++++++++++
  4. 防火墙开放873端口

    firewall-cmd --permanent --zone=public --add-port=873/tcp 
    firewall-cmd --permanent --zone=public --add-port=873/udp 
    firewall-cmd --reload 
  5. 启动rsync服务端并添加到开机自启

    /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

将此条命令添加到/etc/rc.local

4.配置客户端(192.168.0.146)

  1. 安装rsync

    yum install -y rsync
  2. 添加密码文件并修改权限

    mkdir /etc/rsyncd/
    touch /etc/rsyncd/rsyncd.pass
    chmod 600 /etc/rsyncd/rsyncd.pass

在rsyncd.pass文件中写入在服务端的rsyncd.secrets文件中配置的密码

123456
  1. 编辑脚本文件

    vim /root/bash/backup_files_in_46.sh

内容为

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# rsync 使用进行同步 
# rsync的-a选项是archive的意思,加了之后有以下作用:
# • 递归模式
# • 同步软链接
# • 同步权限
# • 同步时间戳
# • 同步属主和属组
# 远程同步时,Rsync可以指定使用某一shell进行安全传输、使用rsync –e ssh选择ssh进行安全连接。
# 删除在源位置不存在而在目标位置存在的文件,使用-delete选项
# topg       # 保持原文件属性如属主、时间的参数。
# --progress # 显示详细的同步进度情况。
# IP地址后为两个冒号,冒号后紧跟服务端rsyncd.conf配置的模块名,而不是以/开头的路径
/usr/bin/rsync -avzrtopg --progress --delete --password-file=/etc/rsyncd/rsyncd.pass rsync@192.168.178.46::backup /home/backup/192_168_178_46
  1. 执行脚本文件

    ./backup_files_in_46.sh

执行后,会弹出在服务端编写的rsyncd.motd公告内容,并开始备份数据,第一次备份需要较长时间,之后执行实现增量备份

  1. 添加crontab任务,自动执行备份

    vim /etc/crontab

内容为

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
 30  0  *  *  *   root      bash  /root/bash/backup_files_in_46.sh >> /root/log/rsync/rsync_$(date '+%Y_%m_%d').log

更新crontab任务

crontab /etc/crontab

5.常见报错

  1. rsync: failed to connect to 192.168.178.46: No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

解决方法:在服务端开启873的tcp/udp端口

  1. ERROR: The remote path must start with a module name not a /

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

解决方法:详情见客户端脚本文件最后一条注释内容

  1. ERROR: Unknown module 'backup'

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

解决方法:检查服务端配置文件中的模块名是否有错误,修改完成后,重启服务端rsync进程


版权属于:LeeYD · Blog
本文标题:配置rsync实现同步备份
本文链接:https://www.leeyiding.com/archives/31/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议
若转载本文,请标明出处并告知本人

最后编辑于: 2020 年 01 月 18 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码