rsync --link-dest는 전체 전송이 끝날 때의 하드 링크만 일치합니다.

rsync --link-dest는 전체 전송이 끝날 때의 하드 링크만 일치합니다.

이 명령은 정기적인 백업을 생성하는 스크립트에 사용됩니다.

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

관련 정보