定時自動備份整個WordPress網站(整站備份+MySQL導出+打包+清理長期無用備份+定時執行)

WordPress安裝在一台VPS服務器上,希望能夠定時將整個網站的數據自動導出,打包,並傳輸到遠程的服務器。備份是完整的,可用於故障恢復。整個過程定時全自動運行。 WordPress的數據分成數據庫數據和網站頁面數據2個部分:

備份數據庫數據

1
mysqldump wordpress > wordpress_db.sql

如果你的Mysql需要輸入賬號密碼可以在~/.my.cnf中加入

1
2
3
[mysqldump]
user=mysqluser
password=secret

文件 ~/.my.cnf 需要權限設置成600

備份網站頁面數據

1
tar -cvzf wordpress.tar.gz /var/lib/www/wordpress

完整的備份腳本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/bin/bash
wordpress_db_name=wordpress;  #數據庫名稱
wordpress_site_dir=/srv/www/www.youdomain.com/;  #你的wordpress網頁所在的目錄
wordpress_site_config_file=/etc/nginx/sites-available/www.youdomain.com;  #你的配置文件所在位置
wordpress_dump_file_dir=/srv/backup/; #備份保存目錄
today=`date '+%Y_%m_%d'`;
mkdir ~/wordpress_$today
mkdir ~/wordpress_$today/db
mkdir ~/wordpress_$today/site
mysqldump $wordpress_db_name > ~/wordpress_$today/db/wordpress_db.sql
tar -cvzf ~/wordpress_$today/site/www.knightli.com.tar.gz $wordpress_site_dir
cp  $wordpress_site_config_file ~/wordpress_$today/site/
tar -cvzf $wordpress_dump_file_dir/wordpress_$today.tgz -C ~ wordpress_$today
rm -rf ~/wordpress_$today
find $wordpress_dump_file_dir -mtime +5 -name "*.tgz" -exec rm -rf {} \;

修改腳本中的以下變量為你對應的值:

變量名稱 含義
wordpress_db_name 數據庫名稱
wordpress_site_dir 你的wordpress網頁所在的目錄
wordpress_site_config_file 你的配置文件所在位置
wordpress_dump_file_dir 備份保存目錄

定時執行

輸入crontab –e,第一次打開的時候需要選擇編輯工具,vim或nano都可以 最後一行添加 00 08 * * * /folder/backup.sh

重啟一下服務 sudo systemctl restart cron

记录并分享
Built with Hugo
Theme Stack designed by Jimmy