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 将不会检查文件的内容(我假设您试图避免使用 wtih --size-only),同时仍然同步已修改的文件。

相关内容