我是 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