我が家には NAS が全部で 3 台あって、自宅内のサーバーとして使っています。
QuickConnect を設定して外部からファイルをダウンロードしたりする系と我が家のアルバムのようなプライペートな外部からアクセスできない系の 2 つに分けています。
QuickConnect でアクセスできる系もパスワードはガチガチにしてあるので基本的にはセキュリティは高いと思っています。
自宅内サーバーは rsync を使ってバックアップ用の NAS に同期していますが、やはり外付の HDD で更にバックしたいと思います。<
これまでは hyperbackup を使っていましたが、cron を外部からいろいろといじるのでおかしくなってしまいました。そもそも hyperbackup は以前から割と使いにくと感じていました。
NAS に ssh ログインして sudo -i で昇格して、
fdisk -l
とすると、いろいろと表示されて最後の方に、
Disk /dev/sdq: 931.5 GiB, 1000204883968 bytes, 1953525164 sectorsDisk model: External USB 3.0Units: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: dosDisk identifier: 0x82f61537
これが外付け HDD です。
マウントポイントを確認します。
mount | grep sdq
すると、
root@NAS718:~# mount | grep sdq/dev/sdq1 on /volumeUSB1/usbshare type ext4 (rw,relatime,nodelalloc,synoacl,data=ordered)
backup 用のディレクトリ Bak を作成します。
mkdir -p /volumeUSB1/usbshare/Bak
シェルスクリプトを作成します。
chatGPT に作ってもらいました。
#!/bin/bash
# バックアップ先ディレクトリBACKUP_DIR="/volumeUSB1/usbshare/Bak"
# バックアップ元ディレクトリ一覧declare -A SRC_DIRS=( [document]="/volume1/document" [music]="/volume1/music" [web]="/volume1/web")
# ログファイル(実行日時付きで分かりやすく)LOGFILE="/var/log/rsync_backup_$(date +%Y%m%d_%H%M%S).log"
echo "Backup started at $(date)" | tee -a "$LOGFILE"
for key in "${!SRC_DIRS[@]}"; do SRC=${SRC_DIRS[$key]} DST="$BACKUP_DIR/$key"
echo "Backing up $SRC to $DST" | tee -a "$LOGFILE"
rsync -avh --delete "$SRC/" "$DST/" >> "$LOGFILE" 2>&1
if [ $? -eq 0 ]; then echo "Backup of $key succeeded." | tee -a "$LOGFILE" else echo "Backup of $key failed!" | tee -a "$LOGFILE" fidone
echo "Backup finished at $(date)" | tee -a "$LOGFILE"
実行権限を与えます。
chmod +x /usr/local/bin/backup.sh
タスクスケジューラに
/bin/bash /usr/local/bin/backup.sh
というタスクを設定して実行した方が簡単ですが、root でないと動かないかもしれません。
実行権限があれば「/bin/bash」は必要ないようですが、あっても構いません。
タスクスケジューラを設定すると cron に記録されるので、私のように外部から NAS の cron をコントロールする場合には、新しく設定された cron を削除しないようにする必要があります。
例えば私の場合は、上のタスクスケジューラを設定した場合、以下のような cron が追加されました。
30 0 * * * root /usr/syno/bin/synoschedtask --run id=5
これで、hyperbackup を使わなくても外付け HDD にバックアップができるようになりました。
hyperbackup は何ヶ月も前のバックアップもされているので、間違って削除してしまった場合でもリカバリできます。
そういうことを考えるとやはり hyperbackup の方が便利と言えます。
もし NAS 本体がクラッシュしたら、外付け HDD を他の NAS に持っていけるのか疑問だったので hyperbackup をやめたのですが、 実験してみたところ簡単に他の NAS に持っていけることがわかったので、もう一度 hyperbackup でバックアップすることにしました。