2022-04-13:新增搬家記錄,在文章末尾;
2022-04-12:
很多年前的筆記了,也一直有用這個方案備份,然而我能說定時執行用的 crontab 一直沒能正確開機自啟麼?「(╯﹏╰)」
因為開發環境從 Win 換到了 wsl,導致了文件被錯誤覆蓋(代碼本身有坑,保是 win 下不會顯現),恢復文件時發現備份日期是 3-25,雖然丟失的文本並不是經常修改的到也還好;
決定先臨時搬家到新買的空間裡,然後把舊的重裝下;
「VPS」HostNamaste $20 年付_廣告慎入_沉冰浮水
「折騰」VSCode + wsl2 + Docker 探究_電腦網絡_沉冰浮水
「折騰」莫名其妙得解決了 wsl2 內 Docker 的自啟動_電腦網絡_沉冰浮水 ← 寫下這段文字時並沒有真正解決
相關推薦:【筆記】LNMP 部署 / 續期 SSL 證書_電腦網絡_沉冰浮水
使用環境為 CentOS;
BAK_DIR=~/Backup
# if [ ! -d ~/BackupTMP ]; then
# mkdir ~/BackupTMP
# fi
if [ ! -d $BAK_DIR ]; then
mkdir $BAK_DIR
fi
cd $BAK_DIR
DATE_SUFF=$(date +%Y%m%d)
#—— 日期後綴
if [ ! -d bak_$DATE_SUFF ]; then
mkdir bak_$DATE_SUFF
fi
# 打包網站文件
cd /home/wwwroot
tar -czf $BAK_DIR/bak_$DATE_SUFF/bak_www.wdssmq.com.tar.gz www.wdssmq.com
# tar -czf $BAK_DIR/bak_$DATE_SUFF/bak_www.wdssmq.com.tar.gz www.wdssmq.com --exclude .git
# tar -czf $BAK_DIR/bak_$DATE_SUFF/bak_www.wdssmq.com.tar.gz www.wdssmq.com \
# --exclude Editormd \
# --exclude Neditor \
# --exclude live2d2 \
# --exclude WebDir/upload/* \
# --exclude TidWiki/backup/* \
# --exclude TidWiki/var/* \
# --exclude zb_users/cache/thumbs/* \
# --exclude .git
# —— 不確定上邊排除姿勢對不對;可以打包一次下來,用 WizTree 分析佔用,排除掉不重要的部分
# —— WizTree - https://www.diskanalyzer.com/
# 導出數據庫
/usr/local/mysql/bin/mysqldump -uroot -p數據庫密碼 數據庫名 > $BAK_DIR/bak_$DATE_SUFF/db_www.wdssmq.com.sql.gz
# -u 和 -p 參數值前不能有空格
# del 3 days ago
find $BAK_DIR/ -type d -mtime +5 -name "bak*" -print -exec rm -rf {} \;
# 「可選」鏡像同步至遠程 FTP
lftp -u FTP用戶名,FTP密碼 -e "mirror -R --delete --only-newer --verbose $BAK_DIR /遠程目錄;exit" www.FTP地址.com
if [ ! -d ~/bin ]; then
mkdir ~/bin
fi
cd ~/bin
code bak.sh
# —— code 是 VSCode 遠程連接後打開文件的命令
# 添加執行權限
chmod g+x ~/bin/bak.sh
# 主動執行測試
cd ~
./bin/bak.sh
將代碼寫入到 bak.sh 文件放在 ~/bin
目錄下,然後設置一個定時,比如每天凌晨 3 點執行。
0 3 * * * /root/bin/bak.sh
# 查看定時任務列表
crontab -l
# 0 3 */7 * * /usr/local/acme.sh/upgrade.sh
# 開啟命令行編輯
crontab -e
# —— 實際文件路徑在 /var/spool/cron
# —— VSCode 可直接遠程編輯
# —— 參考: https://www.wdssmq.com/post/20201120519.html
cd /var/spool/cron && ls
code root
# 修改後重新載入配置文件
/sbin/service crond reload
crontab -l
# 0 3 */7 * * /usr/local/acme.sh/upgrade.sh
# 0 3 * * * /root/bin/bak.sh
chkconfig --list crond
chkconfig --list nginx
chkconfig --list httpd
chkconfig --level 35 crond on
# 查看狀態
service crond status
# 啟動服務
service crond start
定時需要 crontabs,參考:http://www.ha97.com/910.html
關於 lftp:參考:https://www.centos.bz/2011/06/incremental-backup-site-using-lftp/
搬家記錄正文:
把舊空間的vhost/*.conf
直接搬到新空間就不需要重新創建了,如果有 ssl 也一起;
舊空間內:
# 可以修改備份腳本中的 DATE_SUFF 變量,比如加個 _X 後綴然後執行一次打包最新數據
# cd ~/bin
# ./bak.sh
# 進入舊空間實際存放打包文件夾的路徑 /root/Backup/bak_20220413_X
ln -s /usr/local/apache/conf/vhost vhost_a
ln -s /usr/local/nginx/conf/vhost vhost_n
if [ ! -d /usr/local/nginx/conf/ssl ]; then
mkdir /usr/local/nginx/conf/ssl
fi
ln -s /usr/local/nginx/conf/ssl ssl_n
然後 sftp 把打包文件和 vhost 文件夾一並下載回來;
新空間內:
# 新空間內
cd /home/wwwroot
ln -s /usr/local/apache/conf/vhost vhost_a
ln -s /usr/local/nginx/conf/vhost vhost_n
if [ ! -d /usr/local/nginx/conf/ssl ]; then
mkdir /usr/local/nginx/conf/ssl
fi
ln -s /usr/local/nginx/conf/ssl ssl_n
phpMyAdmin 內創建數據庫表上傳db_*.tar.gz
;
sftp 上傳 vhost 文件夾和「站點文件」的打包文件到wwwroot
目錄;
# 新空間內
cd /home/wwwroot
# 批量解壓文件
for tar in bak_*.tar.gz; do tar xvf $tar; done
# 文件權限
chown -Rv www:www /home/wwwroot/*
find ./ -type d -print|xargs chmod 755
find ./ -type f -print|xargs chmod 644
先不要刪壓縮包或符號連接,FileZilla Client 到是應該可以關掉了,之後 VSCode 內操作;
檢查確認下站點程序內的數據庫連接信息;
# 新空間內
# 重啟
lnmp restart
# 寫入當前日期到 test.txt,用以驗證解析切換是否成功
cd /home/wwwroot
for dir in $(ls -d */); do echo $(date +%Y%m%d) > $dir/test.txt; done
# —— 這裡怎麼排除掉 ln ?
切換解析,等待生效;「切換解析後建議儘快停掉舊空間的 web 服務」
然後照著上邊教程為新空間重新配置一次自動備份;
清理文件
新空間內:
cd /home/wwwroot
rm -rf *.tar.gz *.sql.gz
rm -rf rm -rf vhost_a vhost_n ssl_n
命令備忘錄:
# 列出子目錄
ls -d */
# default/ demo.wdssmq.com/ www.wdssmq.com/
# 按行輸出
ls -F | grep /$
default/
demo.wdssmq.com/
www.wdssmq.com/