トップ/pukiwiki1.5/auto_backup
#author("2026-07-17T15:20:21+09:00","default:nemusg.pad","nemusg.pad") #author("2026-07-17T15:23:18+09:00","default:nemusg.pad","nemusg.pad") #title(バックアップ作業を自動実行する) #contents ** backup_note.sh [#ff40d822] - /home/nemusg/domains/note.nemusg.com を丸ごと複製 - コピー先は note.nemusg.com.YYMMDD -- 例:note.nemusg.com.260717 - cp -aを使うため、ファイルのパーミッションや更新日時を維持 - 同じ日付のバックアップがすでにある場合は、再作成しない - コピーに失敗した場合は異常終了 - コピー途中でできた不完全なバックアップフォルダは削除 - コピー完了後、バックアップ最上位フォルダの日時を作成日に更新 - 180日より古い note.nemusg.com.YYMMDD 形式のバックアップを削除 #code_x{{ #!/bin/sh BASE="/home/nemusg/domains" SRC="$BASE/note.nemusg.com" DST="$BASE/note.nemusg.com.$(date '+%y%m%d')" if [ ! -d "$SRC" ]; then echo "ERROR: Source directory not found: $SRC" exit 1 fi if [ -e "$DST" ]; then echo "Already exists: $DST" else if ! cp -a "$SRC" "$DST"; then echo "ERROR: Backup failed. Removing incomplete backup: $DST" rm -rf "$DST" exit 1 fi # cp -aで引き継がれた古い日時を、バックアップ作成日時に変更 touch "$DST" echo "Backup completed: $DST" fi # 作成から180日を超えたバックアップを削除 find "$BASE" \ -maxdepth 1 \ -type d \ -name 'note.nemusg.com.[0-9][0-9][0-9][0-9][0-9][0-9]' \ -mtime +180 \ -print \ -exec rm -rf {} \; echo "Old backups cleanup completed." exit 0 }} ** CRONジョブの設定 [#b64b5f8a] 毎週日曜に実行する場合 #code_x{{ 分 時 日 月 曜日 0 4 * * 0 /bin/sh /home/nemusg/backup_note.sh }} ** 文法チェック [#u95403b2] 何も表示されなければOK /bin/sh -n ~/backup_note.sh ** 手動で実行する [#za6d77e6] ssh接続したターミナルで下記を入力 ~/backup_note.sh ** 手動でtgzを作る [#l7c7c0c3] tgzにすると自動削除されない #code_x{{ tar -czf /home/nemusg/domains/note.nemusg.com.260717.tgz \ -C /home/nemusg/domains \ note.nemusg.com.260717 }}