Unix에서는 파일이 생성되자마자 복사할 수 있는 방법이 있나요? 파일이 서로 다른 시간에 생성되는 위치가 있습니다. 쉘 스크립트를 사용하여 Unix의 다른 위치에 파일을 자동으로 복사하려면 어떻게 해야 합니까?
답변1
inotifywait -e close_write --format "%f" --monitor . |
while IFS= read -r line
do
#cp "$line" destination/ #this would not replicate directories
tar cf - "$line" | tar -C destination/ xf - #this should replicate directories
done
디렉토리(현재 디렉토리에 사용 .
)의 파일 수가 inotify 감시에 대한 시스템 제한(coteyr가 언급한 fs.inotify.max_user_watches)을 초과하지 않는 한 이 문제를 해결해야 합니다.
답변2
쉘 스크립트만 사용하여 파일을 생성하면 실제로 해당 파일을 복사할 수 없습니다. 저는 세 가지 해결책을 생각해 봤습니다.
rsync 대 cron - 간단하고 표준적이며 쉽습니다. 가끔씩(1시간에 한 번씩) 디렉터리에서 rsync를 실행합니다. 변경 사항의 양에 따라 거대한 구조물을 몇 초 안에 동기화할 수 있습니다.
그루스터또는 유사합니다. 필요에 따라.
그냥 심볼릭 링크를 사용하세요.