Estou tentando executar um script de backup quando um disco rígido USB está conectado, estou usando o Ubuntu 16.04.
O script de backup também deve desmontar (e possivelmente desligar) o disco quando terminar.
Não tenho entradas em /etc/fstab
para esse disco. Eu simplesmente atribuí um rótulo (4tb) a ele com e2label
e ele será automaticamente montado em /media/koichirose/4tb
, pertencente à koichirose. Tudo bem até agora.
Aqui está o serviço systemd:
[Unit]
Description=Launches backup script when the 4TB WD drive is plugged in
Requires=media-koichirose-4tb.mount
After=media-koichirose-4tb.mount
[Service]
ExecStart=/home/koichirose/scripts/backup_to_4tb
[Install]
WantedBy=media-koichirose-4tb.mount
Se eu habilitar isso e conectar o HDD, /media/koichirose/4tb
é criado, de propriedade de root, e logo após /media/koichirose/4tb1
é criado, de propriedade de koichirose. A unidade está realmente montada em 4tb1 e 4tb está vazia. O script de backup é executado e falha porque procura '4tb' e não '4tb1'. Se eu desmontar 4tb1, 4tb ainda está lá, de propriedade do root.
Se eu desabilitar o serviço, tudo estará bem novamente, a unidade está montada em 4 TB e o diretório é de propriedade correta do usuário.
Como posso corrigir isso?
Pergunta bônus: no final do meu script, estou atualmente executando umount
.
Isso é bom, mas descobri:
udisksctl unmount -b /dev/sdc1
udisksctl power-off -b /dev/sdc
O qual desmontaria e desligaria a unidade. Dois problemas com ele: ele pede a minha senha sudo (eu gostaria que ela fosse executada sem supervisão) e usa o nome do dispositivo (que pode ser alterado) em vez do ponto de montagem (que estou tentando tornar 'estático').
Edit: aqui está o script de backup ( /home/koichirose/scripts/backup_to_4tb
):
#!/bin/bash
export RESTIC_PASSWORD="mypassword"
repo_path=/media/koichirose/4tb/restic_incoming_backups
dir_to_backup=/home/koichirose
/usr/local/bin/restic -r $repo_path backup $dir_to_backup
#replace with udisksctl later...
umount /media/koichirose/4tb
Tags systemd fstab systemd-mount