Rsync配合crontab实现文件定时异地备份

一、压缩打包

1.使用脚本进行压缩打包

[root@localhost ~]# cat DataBack.sh

#!/bin/bash

DATE=`(date +"%Y-%m-%d")`

tar -cPvzf /directory/backup/backup$DATE.tar.gz /directory/backup --exclude /directory/backup/a  --exclude /directory/backup/b --exclude /directory/backup/c >> tar.log

 

#该脚本表示使用绝对路径以日期形式打包/directory/backup目录下除a、b、c以外的目录(参数为:--exclude $directory),并将打包日志记录到tar.log中。

 

2.tar日志定时切割,防止日志文件占用太多空间

[root@localhost ~]# cat /etc/logrotate.d/tar

/root/log/tar.log{

    rotate 5

    weekly

    copytruncate

    missingok

    dateext

}

# rotate 5      表示最多存储5个归档日志

Weekly        日志文件按周进行轮循

Copytruncate 用于还在打开中的日志文件,把当前日志备份并截断

Missingok     在日志轮循期间,忽略任何错误

Datext        生成的日志文件自动加上时间标签

二、备份服务器Rsync配置

1.配置Rsync配置文件

[root@localhost ~]# vim /etc/rsyncd.conf

#全局配置文件

uid = 0                            #指定文件传输的UID

gid = 0                            #指定文件传输的GID

use chroot = no                    #是否限定在该目录下,默认为        #true,当有软连接时,需要改为fasle,如果为

#true就限定为模块默认目录,通常都在内网使用rsync所#以不配也可以

max connections = 200              #设置最大连接数

timeout = 600                      #超时时间

ignore errors                      #忽略io错误

read only = false                  #指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。

list = false              #指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。

auth users = root         #指定以空格或逗号分隔用户,他们可以使用这个模块,用户不需要再本

                              #系统存在,默认所有用户都可以无密码登录

secrets file = /etc/rsync.password #指定用户名和密码文件 格式: 用户名:密码

log file = /var/log/rsyncd.log     #日志文件路径

 

[backup]                 #设置传输模块

path = /directory/backup/ #该传输模块传送到的路径

[root@localhost ~]# vim /etc/rsync.password   #生成认证文件

Root:password

[root@localhost ~]# chmod 600 /etc/rsync.pasword  #设置权限为600

三、客户端服务器配置定时任务备份数据

1.配置crontab定时任务

[root@localhost ~]# crontab -e

10 23 * * 6 /bin/sh /root/DataBack.sh > /dev/null 2>&1   #周六晚上23:10分打包备份的文件夹,输出定向到空防止/var/spool/clientmqueue爆满导致定时任务无法正常执行,清空命令:ls | xargs rm -f

 

30 00 * * 7 rsync -avz --delete --password-file=/etc/rsync.password /directory/backup/ root@192.168.2555.255::backup >> /directory/bakcup/backup.log  #周日凌晨00:30rsync增量备份到备份服务器上,rsync输出记录到/directory/bakcup/backup.log文件中

 

0 0 1 */1 * find /root/backup -type f -name "*.gz" -mtime +60 -exec rm {} \;  #每月1号执行任务删除超过60天的备份文件防止备份文件太多导致磁盘爆满。

posted @ 2022-03-31 14:33  DevonL  阅读(476)  评论(0编辑  收藏  举报