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 可能会使其更快。也许可以添加一个快速存储的缓存层。