이 명령은 정기적인 백업을 생성하는 스크립트에 사용됩니다.
rsync -aP --link-dest="$BACKUP_DIR/Latest/TheProject" \
"$SOURCE_DIR/" "$BACKUP_DIR/inProgress/TheProject"
$SOURCE_DIR
복사할 파일의 "실시간" 위치입니다./opt/TheProject
예:$BACKUP_DIR/Latest
최신 타임스탬프에 대한 소프트 링크입니다(예:$BACKUP_DIR/20220714-0000
. (스크립트 끝에서 디렉터리$BACKUP_DIR/inProgress
는 현재 타임스탬프로 이동됩니다$BACKUP_DIR/20220714-0000
.)$SOURCE_DIR
$BACKUP_DIR
다른 파일 시스템에 있습니다 .
프로젝트의 일부 대용량 파일은 거의 변경되지 않으므로 --link-dest
.
잘 작동하고 하드링크도 작동합니다( 를 사용하여 본 것처럼 ls -i
). 예를 들어 $BACKUP_DIR/20220714-0000/somedir/bigfile1.bin
이전 버전과 동일한 inode를 갖게 됩니다 $BACKUP_DIR/20220713-0000/somedir/bigfile1.bin
.
문제는 이 하드 링크가 단지 발생하는 것 같다는 것입니다.마지막에전체 rsync
운영 과정.
rsync
런타임 시에는 $BACKUP_DIR/inProgress/somedir/bigfile1.bin
실제로 다른 inode가 있습니다(완전히 복사되고 다른 파일이 처리되고 있음에도 불구하고).
rsync
단점은 명령 실행이 완료된 후 대부분의 파일이 해제 되더라도 소스에 있는 모든 파일의 임시 복사본을 먼저 만들려면 충분한 공간이 필요하다는 것입니다 .
예를 들어, 절대 변경되지 않는 10개의 1GB 파일과 백업 간에 변경되는 1개의 1KB 파일이 있는 경우 추가 디스크 공간을 약 1KB만 사용하게 되더라도 해당 백업을 수행하려면 여전히 10GB의 여유 공간이 필요합니다. 수정되지 않은 파일은 결국 하드 링크됩니다.
나는 이것을 시도했지만 도움이되지 않는 것 같습니다 -H
. 진행하면서 이러한 하드 링크를 생성할 수 있는 --inplace
옵션이 있습니까 (그래서 가장 큰 파일을 위한 최소한의 여유 공간만 필요하고 모든 파일이 필요하지는 않음)?rsync