【问题标题】:Source file size increase during rsyncrsync 期间源文件大小增加
【发布时间】:2018-11-01 19:17:52
【问题描述】:

我用 rsync 备份了一个目录。在使用 du -s 开始 rsync 之前,我查看了目录大小,报告的目录大小约为 1TB。

然后我启动了 rsync,在同步期间我查看了备份目录的大小以获取估计的结束时间。当备份变得远远大于 1TB 时,我很好奇。似乎源目录中许多文件的大小增加了。在 rsync 进程复制该文件之前和之后,我对源文件中的文件执行了du -s

## du on source file **before** it was rsynced
# du -s file.dat
2 file.dat

## du on source file **after** it was rsynced
# du -s file.dat
4096 file.dat 
```

rsync 命令:

rsync -av -s --relative --stats --human-readable --delete --log-file someDir/rsync.log sourceDir destinationDir/

两侧(源、目标)的文件系统是 RHEL 7.4 上的 BeeGFS 6.16,内核 3.10.0-693

有什么想法吗?

【问题讨论】:

  • 你能澄清一下哪个文件是哪个吗?第一个是源文件,第二个是rsync的?
  • 我在代码部分进行了澄清,还添加了 rsync 命令
  • 无法在我的系统中重现此行为。它可能取决于文件系统/内核,因为 4096 将是您文件系统的块大小。您是否还可以添加有关源目录和目标目录所在分区上使用的系统和文件系统的信息?
  • 添加了一些关于文件系统、发行版和内核的信息。

标签: rsync du


【解决方案1】:

file.dat 可能是一个稀疏文件。使用选项--sparse

   -S, --sparse
          Try  to  handle  sparse  files  efficiently so they take up less
          space on the destination.  Conflicts with --inplace because it’s
          not possible to overwrite data in a sparse fashion.

关于稀疏文件的维基百科:

稀疏文件是一种计算机文件,当文件本身部分为空时,它会尝试更有效地使用文件系统空间。这是通过将表示空块的简短信息(元数据)写入磁盘而不是构成块的实际“空”空间来实现的,使用更少的磁盘空间。

可以按如下方式创建稀疏文件:

$ dd if=/dev/zero of=file.dat bs=1 count=0 seek=1M

现在让我们检查并复制它:

$ ls -l file.dat
.... 1048576 Nov  1 20:59 file.dat
$ rsync file.dat file.dat.rs1
$ rsync --sparse file.dat file.dat.rs2
$ du -sh  file.dat*
0       file.dat
1.0M    file.dat.rs1
0       file.dat.rs2

【讨论】:

  • 我读到了稀疏文件。在你的(好的)解释中,稀疏文件在目的地更大。在我的情况下,源目录中的文件大小会增加。
猜你喜欢
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多