systemd에 연결된 HD에서 백업 실행

systemd에 연결된 HD에서 백업 실행

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*

관련 정보