rsync-전송 중에 임시 파일을 작성합니까?


36

내가 볼 수있는 한 rsync는 파일이 완료 될 때까지 대상 디렉토리에 파일을 만들지 않습니다.

즉, 파일이 임시 디렉토리에 파일을 작성하고 파일이 완료되면 파일을 대상 디렉토리에 복사해야합니다.

우선, 이것이 맞습니까?

true 인 경우 rsync가 임시 디렉토리를 사용하지 않고 대신 대상 디렉토리에 파일을 작성하고 완료 될 때까지 파일을 계속 쓸 수 있습니까?

답변:


45

예, 임시 파일을 생성합니다.

매뉴얼 페이지 에 따르면 임시 파일이 저장되는 디렉토리를 다음과 같이 -T 매개 변수와 함께 지정할 수 있습니다.

-T, --temp-dir = DIR 디렉토리 DIR에 임시 파일을 만듭니다.

질문의 두 번째 부분에 대한 답변도 찾을 수 있습니다.

-인플레 이스

이 옵션은 파일의 데이터를 업데이트해야 할 때 rsync가 파일을 전송하는 방법을 변경합니다. 파일의 새 사본을 작성하고 파일이 완료되면 파일을 제자리로 옮기는 기본 방법 대신, rsync는 업데이트 된 데이터를 대상에 직접 씁니다. 파일.


4
중요 사항! 이 질문은 rsync가 "파일을 제자리에 복사"한다고 가정하지만 rsync 설명서에서는 rsync가 실제로 "제자리로 이동"한다고 지정합니다 . 이는 중요 하지 않은 DISTINCTION 입니다. 이렇게하면 파일이 원자 위치로 대상 위치에 나타납니다 . 이 기능은 다른 응용 프로그램이 대상 파일이 나타나기를 기다리는 즉시 읽을 수 있도록 파일을 열지 만 파일 복사가 완료되지 않는 경합 상태를 방지하는 데 유용합니다.
오우거 시편 33

15

기본적으로 대상 디렉토리에 이름이 지정된 임시 파일을 작성합니다 .<FILE_NAME>.<RANDOM_STRING>. 따라서 복사하는 경우 foo.txt라는 tmp 파일을 만듭니다 .foo.txt.GV4H3( GV4H3실행 할 때마다 다른 임의의 문자열입니다). 다음 rsync옵션을 사용하여이 동작을 제어 할 수 있습니다.

   --partial
          By default, rsync will delete any partially transferred
          file if the transfer is interrupted.  In  some  circum‐
          stances  it  is more desirable to keep partially trans‐
          ferred 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.

   --partial-dir=DIR
          A better way to keep partial files than  the  --partial
          option  is  to  specify a DIR that will be used to hold
          the partial data (instead of writing it out to the des‐
          tination file).  On the next transfer, rsync will use a
          file found in this dir as data to speed up the  resump‐
          tion  of  the  transfer and then delete it after it has
          served its purpose.

rsync매뉴얼 페이지 의 관련 부분을 읽으십시오 (다음은 사용 방법에 대한 큰 섹션의 일부만 추출한 것입니다 --partial-dir).


5

rsync는 대상 디렉토리에 임시 파일을 작성합니다. 이 파일의 이름은 소스와 같지만 확장자가 있습니다. 그것은 다음과 같을 수 있습니다 :

source: foo.bar 
target temp: foo.bar.hzmkjt7 (hzmkjt7 is just an example) 

파일이 소스의 정확한 사본임을 확인한 후에 확장자가 제거됩니다. 이름 변경 프로세스 소유권 동안 권한 및 수정 시간이 설정됩니다. 따라서 권한 때문에 파일이 보이지 않을 수 있습니다. 임시 파일을 보려면 자신이 소유하지 않은 파일과 모든 파일을 볼 수있는 권한이 있는지 확인하십시오.



@ ЯрославРахматуллин rsync는 데몬 모드에서도 실행할 수 있습니다. 또는 cronjob으로 예약 할 수 있습니다. 어느 쪽이든 rsync가 실행중인 사용자가 임시 파일을 보려는 사용자가 아닐 수 있습니다. 이 경우 권한 문제 일 수 있습니다.
Simon

1
임시 파일은 "."로 시작할 수 있습니다. 이 경우 .foo.bar.hzmkjt7입니다.
interskh 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.