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

标签:mysql, 远程, 备份, 服务器, 数据, 文件, 网站, 自动

添加新评论