systemd: falha graciosa no backup quando o disco externo não está conectado

1

Eu tenho uma configuração de backup onde eu uso temporizadores systemd para fazer backups por hora, diariamente, semanalmente e mensalmente. Cada unidade de timer aciona um serviço que executa o script de backup.

As unidades de serviço de backup têm o seguinte formato (uma por local de backup, este tem o nome do arquivo [email protected] ):

[Unit]
Description=%i rsnapshot external backup
RefuseManualStart=no
RefuseManualStop=yes

[Service]
Type=oneshot
ExecStart=/usr/bin/rsnapshot -c /etc/rsnapshot-external.conf %i

As unidades temporizadas são da seguinte forma (uma por periodicidade, esta tem o nome de arquivo [email protected] ):

[Unit]
Description=weekly rsnapshot backup to %i
RefuseManualStart=no
RefuseManualStop=no

[Timer]
OnCalendar=weekly
Persistent=true
Unit=rsnapshot-%[email protected]

[Install]
WantedBy=default.target

No arquivo de configuração de backup (por exemplo, /etc/rsnapshot-external.conf ), o local de backup é especificado por meio de um ponto de montagem (por exemplo, /mnt/backup/external ). O script de backup é inteligente o suficiente no sentido de que não será executado se o disco de backup real não estiver montado (ou seja, se não encontrar um determinado diretório no ponto de montagem).

Agora, os discos de backup geralmente não estão conectados ou conectados, mas não estão montados. Para o último caso, habilitei a montagem automática em fstab :

LABEL=backup-external   /mnt/backup/external    ext4    noauto,noatime,nosuid,nodev,x-systemd.automount,x-systemd.device-timeout=1  0 0

O x-systemd.automount garante que o disco esteja montado no acesso ao ponto de montagem. (Eu não sei se o tempo limite definido com x-systemd.device-timeout=1 é efetivo).

Para o caso em que o disco de backup não está conectado, ou algum outro motivo pelo qual o disco de backup não pode ser montado em tempo hábil, eu gostaria que a unidade de serviço falhasse graciosamente. Com isto quero dizer que (i) não deve permanecer ativo e também (ii) que a tentativa não é considerada um sucesso, ou seja, sempre que o disco de backup se torna disponível, o backup deve ser repetido.

Eu tenho um requisito (i) porque, após o desligamento, esse serviço é eliminado somente depois de um tempo limite "grande", o que é inconveniente. (Talvez eu possa definir este tempo limite especificamente para este serviço?)

O requisito (ii) é necessário porque, de outra forma, a recuperação de um backup mensal levaria pelo menos um mês e seria, então, um backup de vários meses.

Então, quais alterações eu preciso fazer para atingir minha meta de ter uma configuração de backup que falha normalmente de acordo com meus requisitos?

    
por equaeghe 11.05.2016 / 13:47

0 respostas