마운트된 드라이브에 파일을 자동으로 복사할 수 있는 방법이 있습니까?

마운트된 드라이브에 파일을 자동으로 복사할 수 있는 방법이 있습니까?

기본적으로 다양한 저장 장치에 백업하고 싶은 작은 파일이 있습니다. 새 드라이브(시작 시 하드 드라이브 또는 시스템이 이미 실행 중일 때 플래시 드라이브)를 설치할 때 이 작업이 자동으로 수행되도록 할 수 있는 방법이 있습니까? 아마도 세상에서 가장 효율적인 방법은 아닐 것입니다. 하지만 드라이브를 연결하고 생각할 필요 없이 파일의 또 다른 복사본을 얻을 수 있다면 멋질 것입니다.

답변1

사용하는 RUN+=것은 잘못된 방법입니다. 표시된 대로 man udev:

이는 매우 단기적으로 실행되는 포그라운드 작업에만 사용할 수 있습니다. 장기 실행 이벤트 프로세스는 해당 장치 또는 슬레이브 장치에 대한 모든 추가 이벤트를 차단할 수 있습니다.

데몬이나 기타 장기 실행 프로세스를 시작하는 것은 udev에 적합하지 않습니다. 분리 여부에 관계없이 분기된 프로세스는 이벤트 처리가 완료된 후 무조건 종료됩니다.

올바른 방법은 SYSTEMD_WANTS(from man systemd.device)을 사용하는 것입니다.

UDEV 데이터베이스 장치 장치 설정은 장치 파일을 통해 또는 udev 데이터베이스에서 직접 구성할 수 있습니다(권장). systemd는 다음 udev 속성을 이해합니다.

SYSTEMD_WANTS= 나열된 모든 장치에 이 장치의 욕구 유형 종속성을 추가합니다. 특정 장치를 사용할 수 있을 때 모든 장치를 활성화하는 데 사용할 수 있습니다. udev 데이터베이스에서 장치에 "systemd" 문자열이 태그되어 있지 않으면 이 태그와 다른 태그는 고려되지 않습니다. 그렇지 않으면 장치가 systemd 장치로 노출되지 않기 때문입니다.

필요한 것은 서비스 파일뿐입니다 /etc/systemd/system/media-USBDRIVE.mount.wants/.

[Unit]
Description=Backup files to USBDRIVE
Requires=media-USBDRIVE.mount
After=media-USBDRIVE.mount

[Service]
ExecStart=/path/to/backupscript

[Install]
WantedBy=media-USBDRIVE.mount

참고: 여기서는 USB 드라이브 이름이 USBDRIVE이고 /media/USBDRIVE.

답변2

사용하고 있다면 systemd이 사람여기이 질문은 이미 답변되었습니다.

배치 규칙

KERNEL=="sd?1",ACTION=="mount",RUN+="/path/to/script.sh"

존재하다

/etc/udev/rules.d/

재실행시 경고사항에 주의하시고 root, 필요한 작업은 모두 스크립트에 넣어주세요.

관련 정보