CentOS의 dropbox에 파일이 나타나는 즉시 다른 폴더로 파일을 이동하는 방법을 찾으려고 합니다.
inotify
몇 가지 단서를 찾기 위해 인터넷을 검색했지만 파일을 처리하려면 스크립트를 호출해야 한다는 사실 외에는 추가 정보를 얻을 수 없습니다.
내 BASH 지식은 매우 제한적이어서 이것을 PHP로 작성할 수 있을지 의심됩니다.
즉, 파일이 나타나는 즉시 다른 폴더로 어떻게 이동할 수 있습니까 inotify
?
답변1
inotifywait
이 명령은 지정된 디렉터리의 내용이 변경될 때마다 메시지를 인쇄합니다. 파일이 생성될 때가 아니라 Dropbox가 다운로드를 완료할 때 올바른 이벤트를 선택해야 합니다. Dropbox가 어떻게 작동하는지 잘 모르겠습니다. 파일의 최종 위치에 쓰는 경우 이벤트를 수신합니다 close_write
. 파일을 임시 위치에 쓴 다음 해당 위치로 이동하는 경우 moved_to
이벤트를 수신합니다. 계속해서 이벤트를 수신하고(기본적으로 다음 이벤트를 기다림) 관련 메시지만 인쇄하도록 -m -q
옵션 을 전달합니다 .inotifywait
cd ~/Dropbox/myfolder
inotifywait -m -q -e close_write --format %f . | while IFS= read -r file; do
cp -p "$file" /path/to/other/directory
done
답변2
간단한 방법은 다음과 같습니다.
#!/usr/bin/env bash
dir=/home/ortix/Dropbox/new/
target=/home/ortix/movedfiles/
inotifywait -m "$dir" --format '%w%f' -e create |
while read file; do
mv "$file" "$target"
done
이동하려는 파일 형식에 대한 자세한 내용을 통해 몇 가지 확인, 로깅 등을 추가할 수 있습니다.