我使用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
任何想法在这里发生了什么?
答案 0 :(得分:0)
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