먼저, 저는 스크립트 작성이 처음이지만 손을 더럽히는 것도 괜찮을 만큼 우분투를 다루는 방법을 잘 알고 있습니다.
간단한 디렉토리 감시를 수행하고 디렉토리에서 새 파일을 찾으면 해당 파일을 다른 디렉토리에 복사하는 작은 스크립트가 있습니다. 내가 사용하는 스크립트는 다음과 같습니다.
#!/bin/sh # sudo rsync -av --omit-dir-times --delete --progress /home/sunmorgus/tempx/Complete/ /media/complete/ 동안 [ 1 ] 하다 echo '감시 디렉터리: '$WATCHED_DIR '새 파일용' while file=$(inotifywait -q -e create "$WATCHED_DIR" --format "%f") 하다 echo 'moonback에 업로드할 새 파일' $file inform-send -i "gtk-go-up" "폴더 모니터 전체" "$file 파일 업로드 중" #rsync는 여기로 갑니다 sudo rsync -av --omit-dir-times --delete --progress /home/sunmorgus/tempx/Complete/ /media/complete/ inform-send -i "gtk-home" "전체 폴더 모니터" "파일이 업로드되었습니다." 완료 완료
여기에서 찾은 스크립트를 수정한 것입니다.http://www.webupd8.org/2010/11/script-to-watch-folder-and-upload-new.html
스크립트에 관해 몇 가지 질문이 있습니다. 우선...이것이 내가 하려는 일을 수행하는 가장 좋은 방법입니까? 내가 말했듯이 잘 작동하지만 나는 항상 새로운 아이디어에 열려 있습니다. 참고: 대상 디렉터리는 Windows 7 시스템의 SMB 공유입니다.
둘째...시작 시 이 스크립트를 실행하는 가장 좋은 방법은 무엇입니까? 지금은 "시작 응용 프로그램" 화면으로 가서 "gnome-terminal -e /script.sh" 줄을 실행하는 새 레코드를 추가했습니다. 작동하지만 이상적으로 보이지는 않습니다. init.d 폴더에 스크립트를 추가하고 update-rc.d를 실행하고 /etc/rc.local에 스크립트를 추가하려고 시도했지만 둘 다 작동하지 않았습니다(오류는 없었지만 스크립트가 실행되지 않았습니다. 재부팅).
마지막으로...소스에서 삭제될 때 대상에서도 삭제되도록 이 스크립트를 수정하는 방법이 있습니까? 스크립트는 파일이 삭제되지 않고 추가될 때만 실행되며, rsync 부분은 소스에서 삭제될 때 대상에서 삭제되지만 새 파일이 추가될 때까지는 이를 수행하지 않습니다. (해당 단락이 의미가 있기를 바랍니다.)
답변1
귀하의 질문에 대해 ...
- 이것은 합리적으로 잘 작동합니다. 화려하게 꾸미고 싶다면 살펴보세요가족.
/etc/rc.local
배포판의 표준 방법에 따라 적절한 초기화 스크립트 의 끝에 추가하거나 생성하십시오.- 옵션은
--delete
이미rsync
그렇게 해야 합니다.
답변2
나는 다음과 같이 할 것입니다 :
cd directory2watch
# watching SUBdirectories
inotifywait --monitor --recursive *|
while read path action file
do
# To get an idea of possible actions that will be
# reported:
echo path=$path action=$action file=$file
# Decide on a followup base on $action:
case $action in
"DELETE") ...
;;
"CLOSE_WRITE,CLOSE")
...
;;
esac
done