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天的备份文件防止备份文件太多导致磁盘爆满。