손상된 복사본을 계속할 때 rsync는 어떤 임시 파일을 사용합니까?

손상된 복사본을 계속할 때 rsync는 어떤 임시 파일을 사용합니까?

"소스 측"에서는 다음을 실행 중입니다.

rsync -azP file.txt username@target:/root/

한 번 중단해야 하고(CTRL+C) 동일한 명령을 실행해야 rsync가 중단된 부분부터 계속됩니다(내가 아는 한).

"대상 측"에서 다음 파일을 볼 수 있습니다.

username@target:/root> ls -lah|grep -i file.txt
-rw-r--r-- 1 username group 120G May  3 16:32 file.txt
-rw------- 1 username group 342G May  8 12:47 .file.txt.yISk8R
username@target:/root> 
  • file.txt: 제 생각에는(?) rsync를 한 번 중단하기 전에 이미 전송된 부분인 것 같습니다.

  • .file.txt.yISk8R: 제 생각에는(?) 일회성 rsync 인터럽트가 발생한 후 전송되는 부분인 것 같습니다.

  • SLES12에서 rsync-3.1.0-12.1.x86_64 사용

: 대상 측에 있는 이 두 파일은 무엇입니까?

그러면 rsync가 완료되면 ".file.txt.yISk8R"이 "file.txt"에 추가되나요?

아니면 더 복잡합니까? :

".file.txt.yISk8R"의 시작 부분이 원래 "file.txt"와 동일해 보이므로 규칙이 다를 수 있습니다...:

source:/root # head -1 file.txt|strings|head -1
A_.o
source:/root #

username@target:/root> head -1 .file.txt.yISk8R|strings|head -1
A_.o
username@target:/root>

username@target:/root> head -1 file.txt|strings|head -1
f/o*d
username@target:/root> 

전송이 진행되는 동안 ".file.txt.yISk8R"이 커지는 것을 볼 수 있습니다.

심지어https://linux.die.net/man/1/rsync

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-z, --compress              compress file data during the transfer
-P                          same as --partial --progress
->
    --partial               keep partially transferred files
    ->
        --partial
            By default, rsync will delete any partially transferred file if the transfer is 
            interrupted. In some circumstances it is more desirable to keep partially 
            transferred files. Using the --partial option tells rsync to keep the partial 
            file which should make a subsequent transfer of the rest of the file much faster.

원래 목적은 이러한 파일이 "대상"으로 복사되는 동안 "대상"에서 다른 "대상 2"로 전달하는 것입니다. ".file.txt.yISk8R" 파일 복사를 시작해야 합니까? 그렇다면 "file.txt" 크기가 120G인 이유는 무엇일까요? 아니면 어떤 방식으로든 데이터가 중복됩니까?

2019년 5월 13일 업데이트:이런, 이것들은 거의 중복된 것 같습니다... 따라서 600GB 파일을 복사하고 예: 500GB에서 중단되면 rsync가 " -와 호환되지 않기 때문에 대상 측에 최소 1100GB의 저장 공간이 필요합니다. azP"는 거의 중복된 파일(.file.txt.xxxxx 대 file.txt)을 생성합니다. 왜 더 작은 블록의 해싱을 수행한 다음 동일한 해시가 없는 마지막 블록을 기반으로 진행하지 않습니까?

답변1

프로세스에 대한 일부 배경 정보를 읽을 수 있습니다.https://rsync.samba.org/how-rsync-works.html(특히 "수신자" 섹션에서)

대상 측에 있는 이 두 파일은 무엇입니까?

(최근) 동기화를 시작하기 전에 첫 번째 파일이 이미 존재했습니다. 이전에 동기화한 적이 있나요? 기본 옵션이 사용된다고 가정하면 rsync동기화가 완료된 것으로 간주될 때까지 해당 옵션이 그대로 유지됩니다.

두 번째 파일은 가장 최근 동기화 중에 사용된 임시 파일입니다. 기본 옵션을 사용하면 다음에 실행될 때 해당 지점에서 선택됩니다.

그러면 rsync가 완료되면 ".file.txt.yISk8R"이 "file.txt"에 추가되나요?

습관. 기존 "file.txt"를 삭제한 다음 임시 파일의 이름을 새 "file.txt"로 바꿉니다.

전송이 진행되는 동안 ".file.txt.yISk8R"이 커지는 것을 볼 수 있습니다.

예. 파일 전송은 원자적이지 않습니다. 이것이 숨겨진 파일 이름이 사용되는 이유입니다. 일반적인 상황에서는 이 파일이 변경되거나 불완전할 수 있으므로 이 파일에 액세스하고 싶지 않습니다.

계속 처리하려면 임시 파일을 무시해야 합니다. "file.txt"를 복사하세요. 이 문서는 항상 일관되고 완전해야 합니다(항상 최신 상태는 아니더라도).

관련 정보