w ake/ s leep b ac k u p- 「Wakes up」USB Drive、rsyncs、およびPowers off
WSBKPは、安価で簡単な(部分的に)「オフライン」バックアップを作成するラッパーシェルスクリプトです。ファイルレベルのバックアップは、RSYNCを使用してデータを外部(USB)ディスクに対処することによって作成されます。バックアップ中にオンラインでのみディスクを使用すると、データ分離や(一部の)暗号ロッカーに対する(一部の)保護などのメリットが提供される可能性があります。
Linuxで実行することを目的としており、RSYNC以外にHDPARMとUDISKSCTLを使用します。すべてのUSBコントローラーとドライブが機能することが保証されているわけではないことに注意してください。
実行すると、出力は次のようになります。
root@host: ~ # wsbkp.sh
[2020-01-01 17:58:20] Powering on drive (UUID=abc12345-1234-1234-1234-aaaabbbbcccc)...
- INFO: Resetting devices from /sys/bus/pci/drivers/ehci-pci...
- INFO: Resetting devices from /sys/bus/pci/drivers/ohci-pci...
[2020-01-01 17:58:28] Using backup device " /dev/sdb5 " (UUID=abc12345-1234-1234-1234-aaaabbbbcccc)
- INFO: Mounted " /dev/sdb5 " " /mnt/bkp "
* Command: " rsync -aA --info=flist0,name0,progress2,stats2 --progress --stats "
* Dir(s): " / "
* Target drive: " /dev/sdb5 " mounted on " /mnt/bkp " (UUID=abc12345-1234-1234-1234-aaaabbbbcccc)
* Exclude:
/proc/
/sys/
/lost+found/
/mnt/
/run/
/tmp/
[2022-03-26 17:58:28] Backup SOURCE DIR: " / " to DESTINATION: " /mnt/bkp/ "
* Syncing complete, listing " /mnt/bkp " ...
total 100
drwxr-xr-x 26 root root 4096 Mar 11 06:11 .
drwxr-xr-x 14 root root 4096 Apr 26 2021 ..
drwxrwxr-x 2 root root 4096 Jan 28 06:54 bin
drwxr-xr-x 4 root root 4096 Mar 11 06:15 boot
drwxr-xr-x 17 root root 4096 Mar 26 17:29 dev
drwxr-xr-x 194 root root 12288 Mar 26 14:30 etc
< -- CUT -- >
[2021-0-01 18:24:57] Done. Powering off
Wake/Sleep Backup
-----------------
SYNOPSIS: wake up usb drive, rsync, power off
USAGE: wsbkp.sh -[o|p][w|s][m|u][l][f] [dirs to backup]
OPTIONS: [-p]|[-o] power on | power off
[-w]|[-s] wakeup | sleep
[-m]|[-u] mount | umount
[-l] list drive info
[-d] skip dev detection
[dirs to backup] overwrites setting in script
また、これら--verbose argはrsync --ignore-errors渡さ--force --delete --dry-run
DSTで追加のdir/ファイルを削除してクリーンアップするには、実行: ./wsbkp.sh --delete -y
スクリプトは、 '/usr/local/sbin'(推奨)、あらゆる場所に配置できます。
rsync、hdparm、udisksctl(udisks2)がインストールされていることを確認してください。
ターゲットバックアップデバイスは、UUID、書き込み可能なファイルシステム、および十分な無料ディスクスペースで使用できる必要があります。
ルートとして実行します。コマンドラインの引数は必要ありません。すべてのオプションはスクリプト内に設定されています。ここでログファイルが作成されます: '/var/log/wsbkp.log'。
「使用」の下にリストされているオプションは、バックアップが終了した後にドライブが自動的に電源を切らなかった場合に備えています。それが発生した場合は、 wsbkp.sh -oで手動で再試行します
別のオプションは、構成されたものとは異なるソースディレクトリの1回限りのバックアップを行うことです。
wsbkp.sh /home/user/important /root/more_stuff
1つ以上のファイルを復元するには、最初にwsbkp.sh -pを実行してドライブで電源を入れ、 wsbkp.sh -mをマウントします。
完了したら、 wsbkp.sh -uでドライブを「切断」して、 wsbkp.sh -o電源でオフにします。
1)バックアップドライブのuuidを取得します:
wsbkp.sh -l実行すると、ドライブの詳細を表示するか、blkidを実行する必要があります
root@host:~# blkid
/dev/sdb1: UUID="bc12345-1234-1234-1234-aaaabbbbcccc" BLOCK_SIZE="1024" TYPE="ext4" PARTUUID="ab1c2345-01"
2)スクリプト内の設定を変更します。
DST_UUID= " abc12345-1234-1234-1234-aaaabbbbcccc " # uuid of backup device
DST_MNT= " /mnt/bkp " # dst/target path
BKP_DIRS= " / " # dirs to backup
EXCL_DIRS= "
--exclude=/proc/
--exclude=/sys/
--exclude=/lost+found/
--exclude=/mnt/
--exclude=/run/
--exclude=/tmp/
"DST_UUIDが正しいUUIDに設定されていることを確認してください。
デフォルトは、ファイルシステム全体( '/')をバックアップし、いくつかの監督を除外することです。また、バックアップに1つ以上の監督を指定することも可能です。例: BKP_DIRS="/etc/ /root/ /home/ /opt/ /usr/local/bin/"
3)テストとスケジュール:
スクリプトを手動で実行して、正しい設定を確認します。問題がOUT=/dev/stdout rsyncからの出力を表示する(進行状況/速度など)。
これらのrsync args --dry-run追加--verboseことも役立つ場合があります。
すべてが順調な場合は、たとえば毎週実行するスクリプトをスケジュールします。以下のCronとSystemD構成を参照してください(シェルにコピー/貼り付け)。
rootとしてスクリプトを実行する:
echo ' 0 3 * * 1 root /usr/local/sbin/wsbkp.sh >/dev/null 2>&1 ' > /etc/cron.d/wsbkpSystemDタイマーとして実行するには、最初にユニットファイルを作成します。
cat << EOF >/lib/systemd/system/wsbkp.service
[Unit]
Description=WakeSleep backup
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/wsbkp.sh
EOF
cat << EOF >/lib/systemd/system/wsbkp.timer
[Unit]
Description=WakeSleep backup scheduled to run every week
[Timer]
OnCalendar=weekly
[Install]
WantedBy=timers.target
EOF次に、タイマーを有効にします: systemctl enable --now wsbkp.timer
そして最後にSystemD: systemctl daemon-reload
詳細については、https://www.freedesktop.org/software/systemd/man/systemd.timer.htmlを参照してください