![파일을 쓰는 동안 cron이 실행되면 rsync는 2개의 백업을 만듭니다.](https://linux55.com/image/103750/%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%93%B0%EB%8A%94%20%EB%8F%99%EC%95%88%20cron%EC%9D%B4%20%EC%8B%A4%ED%96%89%EB%90%98%EB%A9%B4%20rsync%EB%8A%94%202%EA%B0%9C%EC%9D%98%20%EB%B0%B1%EC%97%85%EC%9D%84%20%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4..png)
rsync
30m마다 이 명령을 실행하는 crontab이 있습니다.
rsync -rtbpgoi --suffix="."$(date +"%Y%m%d%H%M") --exclude=".*" \
--exclude="~*" --exclude="[Tt][Hh][Uu][Mm][Bb][Ss].[Dd][Bb]" \
--exclude="[Dd][Ee][Ss][Kk][Tt][Oo][Pp].[Ii][Nn][Ii]" \
--info=STATS0,FLIST0,NAME1 /mnt/datastore/ /mnt/dsbackup
긴 다운로드와 같이 파일이 작성되는 중이면 결국 파일의 추가 백업 복사본이 생기고 그 중 하나는 불완전한 다운로드의 백업이 됩니다.
rsync
아직 작성 중인 파일을 무시하는 방법이나 불완전한 파일 백업을 방지하는 다른 방법이 있습니까 ? 삭제 -b
하고 전환 할 수 있다는 것을 알고 있지만 --suffix
파일이 변경될 때 버전 기록을 유지하는 기능을 유지하고 싶습니다.
답변1
당신의 질문에 대답: rsync
제가 아는 한에는 그렇습니다.아니요실행 중인 별도의 프로그램(웹 브라우저 등)이 파일을 적극적으로 수정하고 있음을 알 수 있는 기본 제공 방법이 있습니까?
주어진 백업 유형(30분마다 동일한 소스 및 대상 실행)을 달성할 수 있습니다.결정적인이 옵션을 명령에 추가하여 최종 파일과 이름이 다른 중간 파일(예: download_1.zip.tmp
중간 파일 download_1.zip
)을 제거합니다.--delete
처음 실행하는 동안 rsync
파일 download_1.zip.tmp
이 백업 위치에 복사됩니다. 다운로드가 30분 이내에 완료된다고 가정하면 중간 파일의 download_1.zip.tmp
이름은 download_1.zip
.다음을 실행하면 rsync
중간 rsync
파일은 더 이상 찾을 수 없으며 download_1.zip.tmp
(이름이 바뀌었기 때문에 download_1.zip
) 백업에서 삭제되고 교체됩니다 download_1.zip.tmp
. download_1.zip
이것은반품/mnt/dsbackup
소스( )에 더 이상 존재하지 않는 추가 파일을 백업( )에서 제거합니다 /mnt/datastore
.
rsync
매뉴얼 페이지(버전 3.1.0) 에서 :
이는 rsync가 수신 측에서 불필요한 파일(송신 측에 없는 파일)을 제거하도록 지시하지만 동기화되는 디렉터리에서만 제거됩니다. 디렉토리 내용(예: "dir/*")에 와일드카드를 사용하지 않고 전체 디렉토리(예: "dir" 또는 "dir/")를 보내도록 rsync에 요청해야 합니다. 와일드카드는 쉘에 의해 확장되므로 rsync는 파일의 상위 디렉터리가 아닌 단일 파일을 전송하라는 요청을 받습니다. --delete-excluded 옵션을 사용하거나 전송 측에서만 일치하도록 규칙을 표시하지 않는 한 전송에서 제외된 파일도 삭제되지 않습니다(필터링 규칙 섹션의 포함/제외 수정자 참조).