udev를 사용하지 않고 파일을 복사하는 Bash 스크립트

udev를 사용하지 않고 파일을 복사하는 Bash 스크립트

특정 USB 드라이브가 연결되면 실행되도록 스크립트가 설정되어 있습니다. USB 드라이브의 폴더를 백업 폴더로 복사하거나 폴더가 이미 있는 경우 해당 폴더를 덮어써야 합니다. 하지만 USB 드라이브를 연결하면 폴더가 생성되지만 파일은 복사되지 않습니다.

내 .rules는 다음과 같습니다.

ACTION=="add", ATTR{idVendor}==Vendor, ATTR{idProduct}==Product, RUN+="/bin/sh /path/to/file/mkBackup"

내 파일 mkBackup은 다음과 같습니다.

#!/bin/bash
a="/path/to/file/Backup"
if [ -e $a ]; then
        rm -rf $a
fi
mkdir $a
cp -r /path/to/usb/folder $a

실행하면 udev백업 폴더가 생성되는데 비어 있는데 실행하면 ./mkBackup폴더가 생성되고 내용이 모두 복사됩니다. 이런 일은 처음이라 udev간단한 질문처럼 보이더라도 양해해 주시기 바랍니다. 미리 감사드립니다.

답변1

백업 폴더가 생성되었으므로 장치를 연결하면 스크립트가 성공적으로 실행된다는 것을 알 수 있습니다. 스크립트가 실행 중인 것 같습니다.앞으로장비가 실제로 설치되었습니다. 따라서 이러한 파일은 아직 cp.

sleep 5나중에 추가하면 어떻게 되나요 mkdir $a? 아니면 기존 파일을 복사하려고 하면 어떻게 되나요?

이 링크참고자료로도 도움이 됩니다.

나는 또한 다음을 사용합니다:

udevadm monitor --udev

udev 이벤트를 실시간으로 시청하세요.

udevadm test /path/to/dev

장치에 대해 실행 중인 udev 이벤트를 시뮬레이션합니다. 이렇게 되니 참고하세요아니요RUN 키로 지정된 프로그램을 실행합니다.

편집하다:Giles가 유용하게 지적했듯이 내 아이디어는 작동하지 않습니다. 그리고 나는 해결책을 모른다. 이유는 다음과 같습니다.

Udev는 USB 장치를 운영 체제에서 사용할 수 있도록 만듭니다. 그러면 운영 체제는 운영 체제에 마운트 가능한 파일 시스템이 포함되어 있음을 인식하고 이를 마운트합니다. 이 시점에서 USB 장치의 파일을 실제로 사용할 수 있습니다.

udev 규칙에 의해 실행되는 모든 스크립트가 실행됩니다.앞으로파일 시스템이 실제로 마운트되었습니다. 대안이 생각나면 게시물을 업데이트하겠습니다.

관련 정보