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の使用を避けたいとします)。

関連情報