Executar backup no HD conectado ao systemd

5

Quando eu conecto um HD via USB, ele deve a) montá-lo b) executar meu backup roteiro.

O que eu tenho atualmente é backintime.service

[Unit]
Description="Runs backintime to backup."

[Service]
User=user
ExecStart=/usr/bin/systemd-inhibit --what=sleep --why="Backup" "backintime -b"

Para iniciar o script de backup e backup.mount

[Unit]
Description=Backup Disk
Before=backintime.service

[Mount]
What=/dev/disk/by-uuid/931129c7-7f15-4042-9a69-796c9eb8ffc9
Where=/media/backup

Mas como posso executá-lo automaticamente?

    
por Reactormonk 09.11.2012 / 18:54

1 resposta

3

Estou lutando para implementar um sistema muito semelhante. Eu tenho que trabalhar, mas eu ainda quero ajustar isso e aquilo (ver esta questão mais geral: systemd - umount dispositivo após o serviço que depende dele termina ).

Aqui está uma solução funcional para o seu problema:

backup.service

[Unit]
Description=<DESCRIPTION HERE>
BindsTo=<STORAGE DEVICE UNIT HERE>.device mnt-backup.mount
After=<STORAGE DEVICE UNIT HERE>.device mnt-backup.mount

[Service]
ExecStart=<CALL TO BACKUP SCRIPT HERE>

Nota: para obter uma lista das unidades do dispositivo de armazenamento, use systemctl list-units --all --full | grep disk

Você pode adicionar RefuseManualStart = yes em [Unit] também.

mnt-backup.mount

[Unit]
DefaultDependencies=no
Conflicts=umount.target
Before=umount.target

[Mount]
What=/dev/disk/by-uuid/<DEVICE UUID HERE> 
Where=/mnt/backup
Type=<FILESYSTEM HERE>

Você praticamente chegou aqui, agora para iniciar automaticamente backup.service , estaremos usando uma regra do udev .

Aqui também você pode adicionar RefuseManualStart = yes em [Unit].

90-backup.rules

KERNEL=="sd*", ATTRS{serial}=="<HD SERIAL HERE>", TAG+="systemd", ENV{SYSTEMD_WANTS}+="backup.service"  

Observação: para obter uma lista dos atributos do seu dispositivo específico, inclua seu número de série, use udevadm info -a -n /dev/sd*

    
por 08.09.2013 / 07:28