w ake/ s leep b ac k u p- “醒來” USB Drive,rsyncs and 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
另外,這些args將傳遞給rsync: --verbose , --dry-run , --force , --ignore-errors和ash --delete選項。
通過在DST上刪除額外的DIRS/文件來清理,運行: ./wsbkp.sh --delete -y
該腳本可以放置在任何位置,例如'/usr/local/sbin'(建議)。
確保已安裝Rsync,HDPARM和UDISKSCTL(UDISKS2)。
目標備份設備應配有UUID,可寫的文件系統和足夠的免費磁盤空間。
作為根。不需要命令行參數,所有選項均在腳本中設置。將在此處創建一個日誌文件:'/var/log/wsbkp.log'。
在“使用”下列出的選項是,例如,例如驅動器在備份完成後無法自動關閉電源。如果發生這種情況,請用wsbkp.sh -o手動重試
另一個選項是對與配置的不同源目錄進行一次備份:
wsbkp.sh /home/user/important /root/more_stuff
要還原一個或多個文件,請首先運行wsbkp.sh -p在驅動器上供電,然後wsbkp.sh -m安裝它。
完成後,將wsbkp.sh -u的驅動器“斷開”到UMOUNT,然後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。
默認值是備份整個文件系統('/'),並排除一些DIR。也可以為備份指定一個或多個DIR。示例: BKP_DIRS="/etc/ /root/ /home/ /opt/ /usr/local/bin/"
3)測試和時間表:
手動運行腳本以驗證正確的設置。如果OUT=/dev/stdout以顯示Rsync的輸出(進度/速度等)。
添加這些rsync args也可能很有用: --verbose和/或--dry-run 。
如果一切順利,請安排腳本每週運行。請參閱下面的Cron和SystemD配置(複製/粘貼到Shell)。
將腳本作為root運行:
echo ' 0 3 * * 1 root /usr/local/sbin/wsbkp.sh >/dev/null 2>&1 ' > /etc/cron.d/wsbkp要作為SystemD計時器運行,請首先創建單元文件:
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