Wake / s Leep B ac k u p - 'Swakes up USB Drive, Rsyncs и Powers Off
WSBKP - это скрипт оболочки обертки, чтобы создать дешевые и простой (частично) «автономный» резервные копии. Резервные копии уровня файлов создаются путем выживания данных на внешний (USB) диск с использованием RSYNC. Наличие диска онлайн только во время резервного копирования может предложить преимущества, такие как изоляция данных и (некоторые) защита от крипто -шкафчиков.
Он предназначен для запуска на 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
Кроме того, эти ARG передаются в RSYNC: --verbose , --dry-run , --force , --ignore-errors и все варианты --delete .
Для очистки путем удаления дополнительных DIRS/файлов на DST запустите: ./wsbkp.sh --delete -y
Сценарий может быть размещен в любом месте, например, usr/local/sbin '(рекомендуется).
Убедитесь, что RSYNC, HDPARM и UDISKSTL (UDISKS2) установлены.
Устройство резервного копирования Target должно быть доступно с 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.
По умолчанию является резервное копирование всей файловой системы ('/') и исключить некоторые Dirs. Также можно указать один или несколько указателей для резервной копии. Пример: BKP_DIRS="/etc/ /root/ /home/ /opt/ /usr/local/bin/"
3) Проверка и расписание:
Запустите скрипт вручную, чтобы проверить правильные настройки. В случае OUT=/dev/stdout чтобы показать вывод из RSYNC (прогресс/скорость и т. Д.).
Добавление этих ARG RSYNC также может быть полезно: --verbose и/или --dry-run .
Если все хорошо, планируйте сценарий, например, каждую неделю. См. Cron и Systemd Configs ниже (копирование/вставка в оболочку).
Запустить скрипт как root:
echo ' 0 3 * * 1 root /usr/local/sbin/wsbkp.sh >/dev/null 2>&1 ' > /etc/cron.d/wsbkpЧтобы запустить как SystemD Timer, сначала создайте файлы модулей:
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