W ake/ s leep b ac k u p - 'despierta' USB Drive, rsyncs y poderes apagados
WSBKP es un script de shell Wrapper para crear copias de seguridad de 'fuera de línea' baratas y fáciles. Las copias de seguridad del nivel de archivo se crean afrontando datos a un disco externo (USB) utilizando RSYNC. Tener el disco en línea solo al hacer una copia de seguridad podría ofrecer beneficios como el aislamiento de datos y (algunos) protección contra los casilleros de criptografía.
Está destinado a ejecutarse en Linux y, además, RSYNC usa HDParm y UdiskSCTL. Tenga en cuenta que no todos los controladores y unidades USB están garantizados para funcionar.
Cuando se ejecuta, la salida se ve así:
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
Además, estos args se pasan a rsync: --verbose , --dry-run , --force , --ignore-errors y todas las opciones --delete .
Para limpiar eliminando dirs/archivos adicionales en DST, ejecutar: ./wsbkp.sh --delete -y
El script se puede colocar en cualquier ubicación, por ejemplo, '/usr/local/sbin' (recomendado).
Asegúrese de que se instalen RSYNC, HDPARM y UDISKSCTL (UDISKS2).
El dispositivo de copia de seguridad de destino debe estar disponible con un sistema de archivos UUID, WRITITY y suficiente espacio de disco gratuito.
Ejecutar como raíz. No se deben necesitar argumentos de línea de comando, todas las opciones se establecen dentro del script. Aquí se creará un archivo de registro: '/var/log/wsbkp.log'.
Las opciones enumeradas en 'uso' se entienden en caso de que si la unidad no se apaga automáticamente después de finalizar la copia de seguridad. Si eso sucede, vuelva a intentarlo manualmente con wsbkp.sh -o
Otra opción es hacer una copia de seguridad única de un directorio de origen diferente al configurado:
wsbkp.sh /home/user/important /root/more_stuff
Para restaurar uno o más archivos, primero ejecute wsbkp.sh -p para encender la unidad y wsbkp.sh -m para montarlo.
Cuando termine, "desconecte" la unidad con wsbkp.sh -u a Umount y luego wsbkp.sh -o para encenderlo.
1) Obtenga UUID de la unidad de copia de seguridad:
Ejecutando wsbkp.sh -l debe mostrar los detalles de la unidad, o simplemente ejecutar blkid
root@host:~# blkid
/dev/sdb1: UUID="bc12345-1234-1234-1234-aaaabbbbcccc" BLOCK_SIZE="1024" TYPE="ext4" PARTUUID="ab1c2345-01"
2) Cambiar configuración dentro del script:
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/
"Asegúrese de que DST_UUID esté configurado en el UUID correcto.
El valor predeterminado es hacer una copia de seguridad de todo el sistema de archivo ('/') y excluir algunos DIR. También es posible especificar uno o más DIR para hacer una copia de seguridad. Ejemplo: BKP_DIRS="/etc/ /root/ /home/ /opt/ /usr/local/bin/"
3) Prueba y programa:
Ejecute el script manualmente para verificar la configuración correcta. En el caso de los problemas establecidos OUT=/dev/stdout para mostrar la salida de RSYNC (progreso/velocidad, etc.).
Agregar estos args RSYNC también puede ser útil: --verbose y/o --dry-run .
Si todo está bien, programen el script para ejecutarse cada semana, por ejemplo. Consulte las configuraciones CRON y Systemd a continuación (copiar/pegar a Shell).
Ejecutar el script como root:
echo ' 0 3 * * 1 root /usr/local/sbin/wsbkp.sh >/dev/null 2>&1 ' > /etc/cron.d/wsbkpPara ejecutar como temporizador Systemd, primero cree archivos de unidad:
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 Luego habilitar el temporizador: systemctl enable --now wsbkp.timer
Y finalmente recargar Systemd: systemctl daemon-reload
Para más detalles, consulte https://www.freedesktop.org/software/systemd/man/systemd.timer.html