A
다른 사람들이 내용을 자주 바꾸는 디렉토리 가 있습니다.
나는 B
지금까지 있었던 모든 파일을 보관 하는 개인 디렉터리를 만들었 습니다 A
.
현재 rsync
파일을에서로 백업하기 위해 때때로 실행 A
됩니다 B
. 그러나 일부 파일이에 추가 된 A
다음 에 파일 A
을 복사 할 수 있기 전에 제거 될 가능성이 있습니다 B
.
이를 방지하는 가장 좋은 방법은 무엇입니까? 이상적으로는 내용 A
이 변경 될 때마다 현재 백업 스크립트를 실행하고 싶습니다 .
답변
당신이있는 경우 inotify를-도구를 사용할 수있는 설치 inotifywait
파일이나 디렉토리에 기록되어있는 경우 작업을 실행하는 데 :
#!/bin/sh
dir1=/path/to/A/
while inotifywait -qqre modify "$dir1"; do
/run/backup/to/B
done
를 Where -qq
스위치가 완전히 침묵, -r
재귀 (필요한 경우) 및 -e
이 경우, 모니터에 이벤트이다 modify
. 보낸 사람 man inotifywait
:
수정
감시 파일 또는 감시 디렉토리 내의 파일이 기록되었습니다.
답변
엄밀히 말하면 누군가 파일을 삭제하고 매우 빠르게 제거하면 놓칠 수 있습니다. inotify를 사용하면 (Linux에서 또는 다른 유니스에서 유사한 기능으로) 위험 창을 작게 만듭니다.
해당 디렉토리에 원하는 파일 시스템을 마운트 할 수 있다면 (이 옵션이 아닐 수도 있음) 모든 파일 버전을 기록하는 파일 시스템을 넣을 수 있습니다 (예 : copyfs) .
답변
entr
파일이 변경 될 때 임의의 명령을 실행할 수있는 명령 줄 도구를 사용해보십시오 . 2.9 릴리스 이후, 디렉토리 감시 옵션 ( -d
)이 추가되어 새 파일이 디렉토리에 추가 될 때 이벤트에 반응합니다.
새 파일이 프로젝트에 추가 된 경우 유틸리티를 실행하는 예 :
$ while true; do
> echo src/* | entr -d your_command
> done
디렉토리 감시 모드에서 각 파일의 상위 디렉토리는 내재적으로 감시 목록에 추가됩니다.
이것의 유일한 의미는 새 파일이 나타나면 외부 쉘 루프가 파일 시스템을 다시 스캔 할 수 있도록 종료해야한다는 것입니다.
디렉토리 감시 옵션이없는 버전은 다음과 같습니다.
$ while true; do
> echo src/* src | entr your_command
> done
다음은 필요에 따라 더 간단한 예입니다.
$ ls -d * | entr sh -c 'rsync -vuar A B'
확인 : entrproject.org 웹 사이트를 자세한 내용은.