rsync --size-only와 --sparse 옵션 간의 상호 작용은 무엇입니까?

rsync --size-only와 --sparse 옵션 간의 상호 작용은 무엇입니까?

및 옵션 rsync과 함께 사용하는 경우 파일이 대상 위치에 이미 전체 파일로 존재하는 경우(그 외 동일) 덮어쓰지 않습니다.--size-only--sparse

이 옵션을 생략하면 --size-only스파스 버전이 아닌 파일을 스파스 버전으로 덮어쓰게 됩니다. 나하다파일을 덮어쓰고 싶고 해당 옵션을 유지하고 싶습니다 --size-only(확실하지 않는 한).

이는 정기적으로 실행되는 스크립트의 일부입니다. 과거에는 이 --sparse옵션이 사용되지 않아 많은 공간이 낭비되었습니다.

--space-only스크립트가 작동하는 동안(여기에 포함되지 않은 다른 옵션과 함께) 대용량 파일을 덮어쓰려면 어떻게 해야 합니까 ? 수색 및 파괴 임무는 너무 "비용이 많이 듭니다".

rsync저는 ext3을 사용하는 Ubuntu와 ext4를 사용하는 CentOS에서 3을 테스트했습니다. 실제 실행은 연결을 rsync통해 이루어집니다 .ssh

다음 데모에서는 rsync.

데모:

$ dd if=/dev/zero of=sparse.out bs=1 seek=1M count=1
1+0 records in
1+0 records out
1 byte (1 B) copied, 0.000307332 s, 3.3 kB/s

$ stat sparse.out
  File: `sparse.out'
  Size: 1048577         Blocks: 16         IO Block: 4096   regular file
Device: 802h/2050d      Inode: 2377326     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  dennis)   Gid: ( 1000/  dennis)
Access: 2011-07-28 22:06:52.000000000 -0500
Modify: 2011-07-28 22:06:52.000000000 -0500
Change: 2011-07-28 22:06:52.000000000 -0500

$ du -h sparse.out
8.0K    sparse.out

$ rsync --size-only sparse.out sparse.out.rsync

$ stat sparse.out.rsync
  File: `sparse.out.rsync'
  Size: 1048577         Blocks: 2064       IO Block: 4096   regular file
Device: 802h/2050d      Inode: 2377329     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  dennis)   Gid: ( 1000/  dennis)
Access: 2011-07-28 22:09:19.000000000 -0500
Modify: 2011-07-28 22:09:20.000000000 -0500
Change: 2011-07-28 22:09:20.000000000 -0500

$ du -h sparse.out.rsync
1.1M    sparse.out.rsync

$ rsync --size-only --sparse sparse.out sparse.out.rsync

$ stat sparse.out.rsync
  File: `sparse.out.rsync'
  Size: 1048577         Blocks: 2064       IO Block: 4096   regular file
Device: 802h/2050d      Inode: 2377329     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  dennis)   Gid: ( 1000/  dennis)
Access: 2011-07-28 22:09:19.000000000 -0500
Modify: 2011-07-28 22:09:20.000000000 -0500
Change: 2011-07-28 22:09:20.000000000 -0500

$ du -h sparse.out.rsync
1.1M    sparse.out.rsync

$ rsync --sparse sparse.out sparse.out.rsync

$ stat sparse.out.rsync
  File: `sparse.out.rsync'
  Size: 1048577         Blocks: 16         IO Block: 4096   regular file
Device: 802h/2050d      Inode: 2377330     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  dennis)   Gid: ( 1000/  dennis)
Access: 2011-07-28 22:11:23.000000000 -0500
Modify: 2011-07-28 22:11:23.000000000 -0500
Change: 2011-07-28 22:11:23.000000000 -0500

$ du -h sparse.out.rsync
8.0K    sparse.out.rsync

$ stat -c '%b %B %o %s' sparse.out sparse.out.rsync
16 512 4096 1048577
16 512 4096 1048577

$ cmp sparse5.out sparse5.out.rsync
$

답변1

--size-only일치하는 크기의 파일을 건너뛰도록 rsync에 지시합니다. 스파스 파일은 미리 할당되므로 크기는 동일하지만 내용이 다를 수 있습니다. 해당 옵션을 제거 --size-only하고 수정 시간이 동기화되었는지 확인하는 것이 좋습니다( --times). 수정 시간이 일치하면 rsync는 --size-only수정된 파일을 계속 동기화하는 동안 파일의 내용을 확인하지 않습니다(wtih 사용을 피하려고 한다고 가정합니다 ).

관련 정보