CentOS의 보관함에 나타나는 즉시 다른 폴더로 파일을 이동하는 방법을 찾으려고합니다.
나는 단서를 찾기 위해 인터넷을 닦았지만 inotify
파일이 나타날 때 파일을 처리하는 스크립트를 호출하는 데 사용해야한다는 사실 이상을 얻을 수는 없습니다 .
내 BASH 지식은 매우 제한되어 있으며 PHP로 작성할 수 있을지 의심됩니다.
즉, inotify
?를 사용하여 표시되는 즉시 다른 폴더로 파일을 어떻게 이동할 수 있습니까?
답변
이것은 간단한 접근법입니다.
#!/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
이동하려는 파일 유형에 대한 자세한 내용으로 검사, 로깅 등을 추가 할 수 있습니다.
답변
이 명령 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