W AKE/ S LEEP B AC K U P - 'acorda' USB Drive, Rsyncs e Powers Off
O WSBKP é um script de shell wrapper para criar backups baratos e fáceis (parcialmente) 'offline'. Os backups do nível do arquivo são criados por dados de dados para um disco externo (USB) usando o RSYNC. Ter o disco on -line apenas durante o backup pode oferecer benefícios como isolamento de dados e (alguns) proteção contra armários de criptografia.
Ele deve ser executado no Linux e além do RSYNC usa HDPARM e UDISKSCTL. Observe que nem todos os controladores e unidades USB são garantidos para funcionar.
Quando executado, a saída se parece com o seguinte:
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
Além disso, esses args são passados para o RSYNC: --verbose , --dry-run , --force , --ignore-errors e todas-opções --delete .
Para limpar, excluindo diretos/arquivos extras no DST, execute: ./wsbkp.sh --delete -y
O script pode ser colocado em qualquer local, por exemplo, '/usr/local/sbin' (recomendado).
Verifique se o RSYNC, HDPARM e UDISKSCTL (UDISKS2) estão instalados.
O dispositivo de backup de destino deve estar disponível com um sistema de arquivos Uuid e gravável e espaço livre de disco livre suficiente.
Executar como raiz. Nenhum argumento da linha de comando deve ser necessário, todas as opções são definidas dentro do script. Um arquivo de log será criado aqui: '/var/log/wsbkp.log'.
As opções listadas em 'uso' são destinadas ao caso, por exemplo, a unidade não conseguir desligar automaticamente após o término do backup. Se isso acontecer, tente novamente manualmente com wsbkp.sh -o
Outra opção é fazer um backup único de um diretório de origem diferente da configurada:
wsbkp.sh /home/user/important /root/more_stuff
Para restaurar um ou mais arquivos, primeiro execute wsbkp.sh -p para ligar na unidade e wsbkp.sh -m para montá -lo.
Quando terminar, "desconecte" a unidade com wsbkp.sh -u para umount e depois wsbkp.sh -o para desligá -lo.
1) Obtenha uuid de unidade de backup:
Executar wsbkp.sh -l deve exibir detalhes da unidade ou apenas executar o BLKID
root@host:~# blkid
/dev/sdb1: UUID="bc12345-1234-1234-1234-aaaabbbbcccc" BLOCK_SIZE="1024" TYPE="ext4" PARTUUID="ab1c2345-01"
2) Altere as configurações dentro do 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/
"Verifique se o dst_uuid está definido como o UUID correto.
O padrão é fazer backup de todo o Fileystem ('/') e excluir alguns diretores. Também é possível especificar um ou mais diretores para fazer backup. Exemplo: BKP_DIRS="/etc/ /root/ /home/ /opt/ /usr/local/bin/"
3) Teste e cronograma:
Execute o script manualmente para verificar as configurações corretas. No caso de questões OUT=/dev/stdout para mostrar a saída do rsync (progresso/velocidade etc).
A adição desses args rsync também pode ser útil: --verbose e/ou --dry-run .
Se tudo estiver bem, agende o script para ser executado toda semana, por exemplo. Consulte as configurações Cron e Systemd abaixo (copiar/colar no shell).
Execute o script como root:
echo ' 0 3 * * 1 root /usr/local/sbin/wsbkp.sh >/dev/null 2>&1 ' > /etc/cron.d/wsbkpPara executar como Timer Systemd, primeiro crie arquivos da unidade:
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 Em seguida, ative o timer: systemctl enable --now wsbkp.timer
E finalmente recarregue o Systemd: systemctl daemon-reload
Para detalhes, consulte https://www.freedesktop.org/software/systemd/man/systemd.timer.html