美文网首页
服务器间数据备份(crontab+rsync)

服务器间数据备份(crontab+rsync)

作者: Pang若两人 | 来源:发表于2018-11-22 05:08 被阅读0次

为了避免服务器故障导致数据丢失,我们通常会将一台机器上的数据在多台机器上进行备份。下面介绍一下如何使用crontab+rsync在服务器间进行数据备份。
假设有两台服务器10.0.0.1和10.0.0.2,希望将10.0.0.1上的~/test文件夹备份到10.0.0.2上的/data/backup/1/test文件夹

手动数据备份

一个简单的数据备份方式是使用rsync手动同步:
rsync [OPTION...] <source folder> <target folder>
e.g. rsync -avzl --delete 10.0.0.1:~/test 10.0.0.2:/data/backup/1 (传输时进行压缩,同步删除)
具体用法查看rsync --help


定时自动数据备份

手动操作比较麻烦,而且可能出现遗漏。为了更稳定便捷地备份数据,我们希望数据能够定时自动备份。
crontab可以实现定时执行指令,但是由于rsync将数据传输到另一台机器时需要手动输入密码,我们不能简单地使用crontab执行上面的rsync命令,而是需要将用来备份的机器配置为daemon模式服务端。

配置daemon模式服务端

  1. 在服务端创建rsync配置文件/etc/rsyncd.conf
#客户端以如下两行的用户权限连过来
uid = rsync
gid = rsync
#与安全相关
use chroot = no
#设置可以允许多少客户端的连接
max connections = 2000
#超时600秒即自动断开
timeout = 600
#Rsync daemon进程号存放的文件地址
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 = 10.0.0.1/2
#host deny = 0.0.0.0/32
#相当于用来作验证的名字(不需要创建),放在secrets file中的格式为: rsync_backup:pwd.
auth users = rsync_backup
secrets file = /etc/rsync.password
##################################
# test module
[test]
    path = /data/backup/1
    hosts allow = 10.0.0.1

(参考rsync备份工具使用)

  1. 在服务器端创建/etc/rsyncd.conf指定uid gid的相应虚拟用户.
    sudo useradd -M -s /sbin/nologin rsync
  2. /etc/rsyncd.conf指定的auth users和密码以<auth user>:<password>格式(e.g.rsync_backup:hahaha)写入/etc/rsync.password
  3. 修改密码文件及备份路径权限
    sudo chmod 600 /etc/rsync.password
    sudo chown -R rsync.rsync /data/backup/1
  4. 启动rsync daemon服务
    sudo rsync --daemon
    查看服务是否开启 ps -ef | grep rsync
    rsync --daemon写入/etc/rc.local,以便开机时自动启动

配置客户端

  1. 将daemon服务端中指定的密码(hahaha)写入密码文件(e.g. /etc/rsync_<deamon_name>.password)
  2. 修改密码文件权限
    sudo chmod 600 /etc/rsync_<deamon_name>.password

设置crontab

  1. 打开crontab配置文件
    sudo crontab -e
  2. 写入文件备份指令
    e.g. * * * * * rsync -avzl --delete 10.0.0.1:~/test 10.0.0.2:/data/backup/1 (每分钟备份一次)
    e.g. 30 4 * * 0 rsync -avzl --delete 10.0.0.1:~/test 10.0.0.2:/data/backup/1 (每周日凌晨4:30备份一次)
  3. 查看crontab定时任务
    crontab -l
  4. 查看crontab执行情况
    sudo tail -f /var/log/cron.log
    (如果没有日志,将/etc/rsyslog.d/50-default.conf#cron.*的注释去掉,重启rsyslog服务:sudo service rsyslog restart,重启cron服务:sudo service cron restart

配置和权限可能有坑,建议先用一个测试文件夹测试全部流程。

相关文章

网友评论

      本文标题:服务器间数据备份(crontab+rsync)

      本文链接:https://www.haomeiwen.com/subject/zalkqqtx.html