inotifywait를 사용하여 파일이 dropbox 폴더에 로드될 때 파일을 이동하세요.

inotifywait를 사용하여 파일이 dropbox 폴더에 로드될 때 파일을 이동하세요.

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

이동하려는 파일 형식에 대한 자세한 내용을 통해 몇 가지 확인, 로깅 등을 추가할 수 있습니다.

관련 정보