如何获取大目录的大小?

如何获取大目录的大小?

如何在 Linux 上获取包含许多小子目录的大目录的大小?我只想要父目录的总大小。

我尝试过du -s mydirectory/,但执行需要很长时间,而且我无法长时间保持终端打开。

有没有一种更快的方法可以更快地获取目录的大小,或者有一种在后台运行的方法,以便我可以关闭终端并稍后获取结果?

答案1

对于nohup马库斯对screen答案的评论中建议的解决方案,您可以在 中找到输出nohup.out。您可能想将其重定向到合适的文件,例如:

nohup du -s myfolder > size-of-myfolder.txt &

答案2

您可以screen在后台使用:

screen -S du -d -m du -s my_dir/

然后重新附加:

screen -r du

答案3

如果您正在寻找能够按需快速跟踪文件夹大小的解决方案,有一些选择:

  • CephFS 文件系统将文件夹(包括子文件夹)内容的总磁盘使用量显示为文件夹的“大小”,而不是显示文件夹中条目所需的存储大小。您可以简单地ls -Slh找到最大的文件和文件夹,然后在子文件夹中重复此操作。 CephFS 适用于具有许多机器的集群。它可以在单台机器上运行,但设置比普通文件系统更复杂。

  • 如果对子文件夹的大小不感兴趣,您可以使用 XFS 的项目配额功能。将每个感兴趣的文件夹分配给要按项目配额跟踪的项目。然后,配额报告会显示每个项目使用了多少空间。

  • 同样,如果您可以为每个要跟踪的文件夹创建专用用户帐户,则可以使用普通用户配额来跟踪使用情况(文件大小和数量)。这适用于比项目配额更广泛的文件系统。

答案4

POSIX另一种方法是在shell 中使用窗口管理器背景:

{
    size=$(du -s myfolder/ | cut -d' ' -f1)
    size=$((size/1024))
    zenity --info --text="myfolder/ size is ${size}MiB"
} &

http://mywiki.wooledge.org/ArithmeticExpression

如果将控制运算符放在&命令的末尾,例如command &,shell 会在后台执行该命令subshell。 shell 不等待命令完成,返回状态为 0。最后一个后台命令的 Pid 可通过特殊变量获得$!

相关内容