タイトル:「折腾」Linux 定期バックアップチュートリアル
日付:2022-04-12 18:59:29
タグ:
- VPS
- Linux
- CentOS
- 折腾
カテゴリ: - コンピューターネットワーク
ID:2342
エイリアス:20140816860
2022-04-13:引っ越し記録を追加しました。記事の末尾に;
2022-04-12:
数年前のメモで、この方法でバックアップを続けていますが、cron タブを使用して定期実行することができず、正しく起動しないままですか?「(╯﹏╰)」
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の間にスペースを入れないでください
# 3日前のファイルを削除
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
定期的なバックアップには cron タブが必要です。参考: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
次に、パッケージ化されたファイルと 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
をアップロードします。
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/
# 1行ずつ出力
ls -F | grep /$
default/
demo.wdssmq.com/
www.wdssmq.com/