USB HDD가 연결되어 있을 때 백업 스크립트를 실행하려고 하는데 Ubuntu 16.04를 사용하고 있습니다.
또한 백업 스크립트는 완료되면 디스크를 마운트 해제(및 종료할 수도 있음)해야 합니다.
/etc/fstab
이 디스크에 대한 항목이 없습니다 . 간단히 태그(4TB)를 할당 하면 koichirose가 소유한 태그 e2label
에 자동으로 마운트됩니다 . /media/koichirose/4tb
여태까지는 그런대로 잘됐다.
시스템 서비스는 다음과 같습니다.
[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
이것을 활성화하고 HDD를 연결하면 /media/koichirose/4tb
루트가 생성 및 소유하고 곧 /media/koichirose/4tb1
koichirose가 생성 및 소유하게 됩니다. 실제로 드라이브는 4TB1에 설치되어 있는데 4TB는 비어있습니다. 그런 다음 "4tb1" 대신 "4tb"를 찾기 때문에 백업 스크립트가 실행되고 실패합니다. 4tb1을 제거하면 루트가 소유한 4tb가 여전히 존재합니다.
서비스를 비활성화하면 모든 것이 다시 제대로 작동하고 드라이브는 4TB에 마운트되고 디렉터리는 사용자가 올바르게 소유하게 됩니다.
이 문제를 어떻게 해결할 수 있나요?
보너스 질문: 내 스크립트가 끝날 때 현재 실행 중입니다 umount
. 이것은 잘 작동하지만 다음을 발견했습니다.
udisksctl unmount -b /dev/sdc1
udisksctl power-off -b /dev/sdc
이렇게 하면 드라이브가 마운트 해제되고 전원이 꺼집니다. 여기에는 두 가지 문제가 있습니다. sudo 비밀번호를 묻고(무인 실행을 원함) 마운트 지점 대신 장치 이름(변경될 수 있음)을 사용합니다("정적"으로 설정하려고 시도함).
편집: 백업 스크립트( /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