및 옵션 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 사용을 피하려고 한다고 가정합니다 ).