加快 du(或许可以使用 ncdu)的硬链接备份速度

加快 du(或许可以使用 ncdu)的硬链接备份速度
du -hc --max-depth=1 /home/back/tvppclientarea/ | sort -k2

显示使用 rsync 和硬链接的备份目录的大小。该命令列出每个目录并显示添加到前一个目录的大小,即每个备份的大小。

作为参考,rsync 命令是

rsync --archive --itemize-changes --human-readable --stats --delete --link-dest=/home/back/tvppclientarea/1586563849_Sat_11Apr2020_0110 [email protected]:/home/tvppclientarea/. /home/back/tvppclientarea/1586565194_Sat_11Apr2020_0133/.

假设目录有 1.5TB,运行起来需要很长时间,几分钟。想知道是否有办法加快速度。我遇到了一个命令 ncdu,我认为它可能有用(它会缓存,因此第二次运行速度会更快),但找不到如何用它替换我的命令。

答案1

的后续版本尝试仅对硬链接的空间使用进行一次计数,有关详细信息,请参阅手册页。这与行为ncdu不同。du

如果您只想像这样计算一次硬链接,就无法避免扫描整个备份树。或者至少,扫描一个备份的目标和 --link-dest。有必要找到对同一 inode 的引用。

ncdu -o 输出文件保存一份报告的每个文件。不是增量缓存,您所能做的就是将整个内容加载到 ncdu UI 中。因此它仍然需要几分钟才能运行

ncdu -1xo- /home/back/tvppclientarea/ | gzip > ncdu_tvppclientarea_$(date "+%Y-%m-%d").gz

但稍后再次加载该报告的速度要快得多。

zcat ncdu_tvppclientarea_$(date "+%Y-%m-%d").gz | ncdu -f-

可以保存ncdu每个单独备份的报告,而不是整个树。因此,目标目录和硬链接所在的 --link-dest。然后比较最后备份的大小就是找到多个报告文件并ncdu -f在每个文件上运行。


文件系统元数据是许多小的 IO。像这样迭代时,每个文件的数量级为一个。改进存储系统的 IOPS 可能会使其更快。也许可以添加一个快速存储的缓存层。

相关内容