如何找到哪个文件夹正在快速占用空间?

如何找到哪个文件夹正在快速占用空间?

我正在运行 Linux 服务器,我们将此服务器用作 samba 共享驱动器。从昨天开始,其中一个共享驱动器的大小突然增加(每十分钟约 100 MB)。此共享驱动器中有太多文件夹和子文件夹。现在共享驱动器空间不足。

请帮我看看哪个文件夹正在增大。我尝试使用下面的命令来获取共享驱动器子目录的大小。但我需要比较输出,如果我运气不好的话,要花很长时间才能找到。

du -sh --maxdepth=1  

您能否建议我,还有其他方法可以找到此文件系统中的数据交易吗?

答案1

使用以下命令查找最近修改的文件。它将显示文件夹内过去十分钟内修改的文件。增加 -mmin -10 参数可查看文件夹随时间的变化情况。请参阅男人找到并寻找-mtime-最小详细信息:

sudo find FOLDER -xdev -type f -mmin -10 -ls

另一种情况是,已删除的文件仍占用磁盘空间,由于进程仍在使用它们,因此无法恢复。在这种情况下,请确定使用已删除文件的进程并完成这些进程以恢复空间:

sudo lsof | grep deleted

查找大小在这里没有用,因为许多小文件占用的空间可能与大文件一样多甚至更多。还要检查 inode 编号。此外,要获取 FOLDER 内所有文件夹的大小:

sudo find FOLDER -xdev -type d | xargs -I DIR du -sm DIR | sort -nk1

答案2

您可以尝试使用iotop显示进程 I/O 使用情况的工具(换句话说,哪些顶级进程正在使用您的磁盘),这样您就可以跟踪哪个进程占用了空间。另一种方法是使用inotify(部分inotify-tools),它可以监视目录的更改。

du或者简单的方法是按以下方式使用。

定义以下别名:

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

然后进入某个可疑文件夹并运行,big显示当前目录中最大的文件和目录。或者运行big-files以递归方式查看当前文件夹中最大的文件。

注意:要在 OSX/BSD 上正常工作(因为sort没有-h),请sort从安装coreutils-h从 中删除ls并使用sort -nr

答案3

我通常用ncdu它来探索磁盘空间使用情况,如果越来越大的文件夹没有阻塞您的系统或 ncdu 扫描,您应该能够通过查看哪些文件夹看起来异常大来找到。

相关内容