我从来没有真正使用过 tarball/archived,除了上传(带压缩)。现在,我已经积累了大量的软件项目编码实验——基本上是包含大量小文件(主要是源代码文件和 git 对象)的目录,当我备份时,这些似乎会减慢速度我的家或与其他设备同步(我主要通过 USB 电缆使用 rsync 进行同步)。
我想知道,这是一个记录在案的现象(基准吗?)并且压缩长期未触及的项目目录会加快速度吗?这是一个明智的做法吗?
我正在使用 ext4 文件系统。
答案1
将很少访问的旧目录归档为 tarball 肯定可以提高基于文件的备份系统的性能。
我想知道,这是一个有记录的现象(基准吗?)
这并不是真正的“记录现象”,而是必须扫描文件系统并逐个检查每个文件以确定是否需要备份的自然结果。
您可以减少备份频率正如法希姆·米萨(Faheem Mitha)建议的那样,但您可能会发现以不同频率维护多个备份(对于经常更新的内容和旧存档的内容)或维护文件排除列表等很麻烦。如果您确实不打算很快访问这些目录,我认为将它们打包是一个非常好的主意。出于完全相同的原因,我已经这样做过很多次了。
答案2
我在克隆存储库的目录上运行了一个小型基准测试——许多小文件。
以下是参数:
17002 files
4.9G
46 root directories
tar command: tar cf (no compression)
rsync command: rsync -aH --delete --stats
结果:
本地 rsync 到空目录(解压后的文件):
real 5m36.447s
user 0m34.692s
sys 0m56.390s
Second local rsync (unpacked files):
real 0m6.810s
user 0m2.257s
sys 0m3.363s
焦油时间:
real 1m14.648s
user 0m14.278s
sys 0m2.175s
本地 rsync 到空目录(解压后的文件):
real 2m6.355s
user 0m20.799s
sys 0m21.122s
本地 rsync 到空目录(打包文件):
real 0m0.125s
user 0m0.005s
sys 0m0.011s
因此,焦油处理似乎可以显着提高性能。令人惊讶的是,压缩 + 第二个本地 rsync 总共花费的时间比第一个本地 rsync 少。
Tarring 还显着提高了无操作 rsync 运行的速度。
我还尝试通过压缩来进行焦化。涂焦油gzip
大约需要10分钟,lzop
效果并没有好多少(我在大约7分钟时停止了)。根据漂亮的图表http://www.linuxjournal.com/article/8051?page=0,2,如果我要使用的最慢链接是 USB 电缆(大约 20MBps),那么压缩无论如何都不会提高我的带宽。
答案3
Rsync 每次都需要检查所有这些文件和文件夹。这会占用时间、性能和网络负载。如果将每个项目放入 tarball 中,则意味着一次文件检查而不是数千次检查。它还节省空间。