确定 Linux 目录中用户的磁盘使用情况

确定 Linux 目录中用户的磁盘使用情况

我是 Linux 服务器的非管理员用户,该服务器中有多个用户/员工存储数据。当我们用完磁盘空间时(即当我们注意到数据传输失败等时),我们中的某个人会运行 df 命令来确定确实缺少空间:

df -h /store/*

接下来使用 du 命令来确定顶级用户,然后公开“请求”这些用户以优化他们的使用情况:

du -hs /store/dir1 | sort -h

现在,在另一台服务器上(比如 newstore,到目前为止我们通常都没有问题!)我们在同一个“设备/集群”内有多个目录结构,这需要多次运行 du

du -hs /newstore/dir1 | sort -h
du -hs /newstore/dir2/levelchange | sort -h
du -hs /newstore/dir3/new/old | sort -h

然后我将输出复制到 excel 并“拼接”成用户视图。我正在寻找一个更简单的解决方案。

此过程必须由具有标准权限的非管理员用户完成(因为管理员是远程的,坦率地说我们不认识他/她);因此无法安装其他程序。

我正在寻找一个解决方案,我可以获取每个用户/所有者使用的存储信息,并汇总到多个目录中,其中我只需指定顶级目录(在本例中为 /newstore)。

服务器Linux版本:Red Hat Enterprise Linux

编辑1:每个目录都有一个用户作为所有者,一个用户可能有多个目录。

答案1

尝试(针对每个用户):

find $topdir -type d -user $user -print0 | du -hsc --files0-from -

慢动作

  • find $topdir -type d -user $user -print0生成 $user 所拥有的以空字符结尾的目录列表
  • 该列表通过管道传输至du
  • --files0-from计算du从 stdin 读取的以空字符分隔的文件的大小 ( -)

您可以通过对输出进行排序来更轻松地发现有问题的目录:

find $topdir -type d -user $user -print0 | du -msc --files0-from - | sort -n

相关内容