Linux自动备份网站文件和MySQL数据到远程服务器
本地生成备份
创建备份文件夹
mkdir -p /home/bakup
创建本地备份脚本文件
vi /root/bakup.sh
写入:
#打包网站文件
tar zcvpf /home/backup/blog-`date +%Y%m%d%H%M`.tar.gz /home/wwwroot/2dan.cc/* --exclude={'list','view','news'}
#导出数据库至独立文件
databases=`mysql --user=root -p123456 -e "show databases;" | grep -Ev "(Database|mysql|information_schema|performance_schema)"`
for db in $databases; do
mysqldump -uroot -p123456 --lock-tables=false --databases $db | gzip > "/home/bakup/$db-`date +%Y%m%d%H%M`.sql.gz"
done
#删除3天前的备份
find /home/backup/ -name "*.gz" -type f -ctime +3 | xargs rm -rf
赋予脚本权限
chmod 755 /root/bakup.sh
添加到计划任务
echo "00 4 * * * /root/backup.sh >/dev/null 2>&1" >> /etc/crontab
使用rsync实现文件远程同步备份
主服务器配置(网站源文件服务器)
编辑rsync配置文件:vi /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = yes
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
port = 873
fake super = yes
read only = yes
list = no
ignore errors
auth users = backup
secrets file = /etc/rsyncd.pwd
log file = /var/log/rsyncd.log
reverse lookup = no
[bakupdir]
path = /home/bakup/
hosts allow = 192.168.0.101,192.168.0.102
创建rsync的启动用户:
useradd rsync -Um -s /sbin/nologin
创建密码文件:
echo "backup:123456" > /etc/rsyncd.pwd
设置文件权限600:(权限不对会登陆不上)
chmod 600 /etc/rsyncd.pwd
设置rsync开机启动:
echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local
注意: iptables必须允许rsync的873端口被连接。
启动rsync:
rsync --daemon --config=/etc/rsyncd.conf
客户端配置(存储备份服务器)
创建客户端的密码文件:
echo "123456" > /root/rsync.pwd
注意:客户端的密码脚本不带用户名。
设置密码文件权限600:(权限不对会登陆不上)
chmod 600 /root/rsync.pwd
创建rsync同步脚本:vi /root/rsync.sh
,命令格式如下:
rsync [-参数] 源地址路径 目标地址路径
例如将100上的/home/bakup
目录下的文件及文件夹同步到本机的/home/bakup
目录中,则写入:
rsync -aq [email protected]::bakupdir /home/bakup/ --password-file=/root/rsync.pwd
赋予脚本执行权限:
chmod 755 /root/rsync.sh
将客户端脚本加入计划任务,每天凌晨3:03自动同步一次:
echo "3 3 * * * /root/rsync.sh" >> /etc/crontab