トップ/pukiwiki1.5/auto_backup

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
}}