沉冰浮水

沉冰浮水

做最终到的事,成为最终成为的人!
github
bilibili
mastodon
zhihu
douban

「折腾」Linux 定時バックアップチュートリアル

タイトル:「折腾」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/
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。