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