USB를 통해 HD를 연결하면 a) HD를 마운트하고 b) 백업 스크립트를 실행해야 합니다.
내가 현재 가지고 있는 것은backintime.service
[Unit]
Description="Runs backintime to backup."
[Service]
User=user
ExecStart=/usr/bin/systemd-inhibit --what=sleep --why="Backup" "backintime -b"
백업 스크립트를 시작하고backup.mount
[Unit]
Description=Backup Disk
Before=backintime.service
[Mount]
What=/dev/disk/by-uuid/931129c7-7f15-4042-9a69-796c9eb8ffc9
Where=/media/backup
하지만 이것을 자동화하는 방법은 무엇입니까?
답변1
나는 매우 유사한 시스템을 구현하려고 노력하고 있습니다. 제대로 작동했지만 여전히 이것저것 수정하고 싶습니다(보다 일반적인 질문 참조:systemd - 서비스 완료 후 장치 마운트 해제).
이것은 귀하의 문제에 대한 유효한 해결책입니다.
백업 서비스
[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>
참고: 저장 장치 목록을 얻으려면 다음을 사용하십시오.systemctl list-units --all --full | grep disk
당신은 추가하고 싶을 수도 있습니다수동 시작 거부=[단위] 아래에도 있습니다.
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>
거의 다 왔습니다. 이제 자동으로 시작하려면 backup.service
다음을 사용하겠습니다.udev 규칙.
여기에서 [Unit] 아래에 RefuseManualStart=yes를 추가할 수도 있습니다.
90-백업.규칙
KERNEL=="sd*", ATTRS{serial}=="<HD SERIAL HERE>", TAG+="systemd", ENV{SYSTEMD_WANTS}+="backup.service"
참고: 특정 장치(일련 번호 포함)에 대한 속성 목록을 얻으려면 다음을 사용하십시오.udevadm info -a -n /dev/sd*