最近WordPress又更新了,升级前备份工作肯定是不能少的,所以备份WordPress也提上了日程。
备份数据库
首先创建一个备份目录:
chmod /root/wordpress_backup
cd /root/wordpress_backup
mysql -u root -p
show databases;
exit;
我这里使用的是wordpress2,自然备份的也是这个。
不确定正在使用的数据库的,可以在目录下的配置文件
wp-config.php
中查看。
备份数据库:
sudo mysqldump -u root -p wordpress2 > $(date '+%Y%m%d')_wordpress.sql
输入密码后就会生成sql文件。
此外,还可以通过压缩来节省磁盘空间:
sudo mysqldump -u root -p wordpress2 | gzip > $(date '+%Y%m%d')_wordpress.sql.gz
备份网站
sudo tar -cpvzf $(date '+%Y%m%d')_wordpress.tar.gz /var/www/blog2/
都备份好了以后查看一下:
ls -alh
sql备份很小,只有400k,网站备份有36M。
查看一下磁盘占用:
df -h
自动化
我编写了一个备份脚本:
#备份wordpress脚本
#configuation
db_username=root
db_password=Y@2mysql
bakdir=/root/wordpress_backup
wpdir=/var/www/blog2
#end
#备份SSL证书
sudo cp -pf /etc/letsencrypt/live/blog.icexmoon.xyz/fullchain.pem $wpdir
sudo cp -pf /etc/letsencrypt/live/blog.icexmoon.xyz/privkey.pem $wpdir
#备份vhost配置
sudo cp -pf /etc/httpd/conf.d/httpd-vhosts.conf $wpdir
#备份sql
sudo mysqldump -u$db_username -p$db_password wordpress2 | gzip > $bakdir/$(date '+%Y%m%d')_wordpress.sql.gz
#备份网站
sudo tar -cpzf $bakdir/$(date '+%Y%m%d')_wordpress.tar.gz $wpdir
#删除因为备份工作产生的不必要副本
sudo rm -f $wpdir/fullchain.pem
sudo rm -f $wpdir/privkey.pem
sudo rm -f $wpdir/httpd-vhosts.conf
#删除超过30天的备份
find $bakdir -type f -name \*.gz -mtime +30 -exec rm {} \;
借鉴了这篇文章。
可以用这个命令执行:
sh /var/www/backup.sh
现在设置定时执行
在设置crontab之前我们需要确认一下服务是否正常运行:
systemctl status crond
如果正常运行,通过以下命令修改crontab:
crontab -e
加入定时任务:
0 3 * * * sh /var/www/backup.sh
如果要尽快验证定时任务能否顺利执行,可以修改为
*/10 * * * * sh /var/www/backup.sh
,这样会缩短到每10分钟执行一次,记得在验证后改回来。更多关于crontab的设置可以看。
参考资料
。
文章评论