Rsync 文件同步(二):shell 脚本定时备份数据

备份源设置

哪个地方需要备份就在哪个服务器上跑rsync的daemon服务

  • 192.168.204.52
  • 需要备份的数据目录:/home/share
  • centos 7.9
  • rsync 版本:3.1.2

daemon 配置文件

motd file = /etc/rsyncd.motd
transfer logging = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
port = 873
address = 0.0.0.0
uid = 0
gid = 0
use chroot = yes
max connections = 100
timeout = 900
[backups]
comment = This is a backup test
#需要备份的目录
path = /home/share
ignore errors
#备份时候使用的账号
auth users = backups_user
secrets file = /etc/rsyncd.secrets
list = true

密码文件

#写入账号密码
echo "backups_user:Test@123456" > /etc/rsyncd.secrets

#权限要给
chmod 600 /etc/rsyncd.secrets

启动服务

systemctl restart rsyncd

image-20230214092149588

备份客户端配置

需要将文件备份到这个服务器的某个位置

  • 192.168.204.57
  • 备份的位置:/home/backupsdir
  • centos 7.9
  • rsync 版本:3.1.2

脚本实现

  1. 使用脚本创建临时密码文件,不将密码文件长期放在服务器上
  2. 定期对源数据进行备份,通过crontab定时任务

具体实现

#!/bin/bash
#Author:whale
#Version:1.0 demo
#Date:2023-02-14
#Description:Timing synchronization
#/opt/data_rsync.sh

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
BACKUP_PATH='/home/backupsdir'

#判断是否还存在同步任务
if [ $(ps aux|grep '/home/backupsdir'|grep -v 'grep'|wc -l) -gt 0 ];then
    echo 'rsync process is running' >> /tmp/rsync.log
    exit 1
elif [ $(ps aux|grep '/home/backupsdir'|grep -v 'grep'|wc -l) -eq 0 ];then
    #写入密码文件
    echo 'Test@123456' > /etc/rsync_client.pass
    chmod 600 /etc/rsync_client.pass
    #从服务端去下载数据
    rsync -avzP --delete --password-file=/etc/rsync_client.pass  backups_user@192.168.204.52::backups ${BACKUP_PATH} &> /dev/null
    if [ $? == "0" ];then
        echo "$(date '+%Y-%m-%d %H:%M:%S') backup success." >> /tmp/rsync.log
        rm -f /etc/rsync_client.pass
    else
        echo "$(date '+%Y-%m-%d %H:%M:%S') backup faile." >> /tmp/rsync.log
    fi  
fi

测试一下

  • 首次手动运行一下这个脚本

image-20230214095609661

image-20230214095752100

  • 服务端去新增一些文件试试同步

image-20230214100028485

配置定时任务

cron配置

这样就可以实现定时同步任务了

# 每小时的第一分钟执行一次
echo '1 */1 * * *  /bin/bash /opt/data_rsync.sh &> /dev/null' >> /var/spool/cron/root

image-20230214100426894

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值