pukiwiki1.5/auto_backup の履歴(No.1)


backup_note.sh#

  • /home/nemusg/domains/note.nemusg.com を丸ごと複製
  • コピー先は note.nemusg.com.YYMMDD
    • 例:note.nemusg.com.260717
  • cp -aを使うため、ファイルのパーミッションや更新日時を維持
  • 同じ日付のバックアップがすでにある場合は、再作成しない
  • コピーに失敗した場合は異常終了
  • コピー途中でできた不完全なバックアップフォルダは削除
  • コピー完了後、バックアップ最上位フォルダの日時を作成日に更新
  • 90日より古い note.nemusg.com.YYMMDD 形式のバックアップを削除
#!/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

# 作成から90日を超えたバックアップを削除
find "$BASE" \
    -maxdepth 1 \
    -type d \
    -name 'note.nemusg.com.[0-9][0-9][0-9][0-9][0-9][0-9]' \
    -mtime +90 \
    -print \
    -exec rm -rf {} \;

echo "Old backups cleanup completed."

exit 0

CRONジョブの設定#

毎週日曜に実行する場合

分 	時 	日 	月 	曜日
0	4	*	*	0
/bin/sh /home/nemusg/backup_note.sh

手動で実行する#

ssh接続したターミナルで下記を入力

~/backup_note.sh

手動でtgzを作る#

tgzにすると自動削除されない

tar -czf /home/nemusg/domains/note.nemusg.com.260717.tgz \
    -C /home/nemusg/domains \
    note.nemusg.com.260717