如何find哪个文件夹快吃空间?

我正在运行Linux服务器,我们使用这台服务器作为samba共享驱动器。 从昨天开始,其中一个共享驱动器的容量越来越大(每十分钟〜100MB)。 在共享驱动器中有太多的文件夹和子文件夹。 现在共享驱动器空间不足。

请帮助我如何find哪个文件夹越来越多。 我已经尝试下面的命令来获取共享驱动器的子目录的大小。 但是我需要比较输出和花费很长时间来发现我是不是很幸运。

du -sh --maxdepth=1 

你能build议我,有没有其他办法可以在这个文件系统中find数据交易?

使用下面的命令查找最近修改的文件。 它将显示FOLDER中最近十分钟内修改的文件。 增加-mmin -10参数以查看FOLDER如何在一段时间内被修改。 查看man查找和查找-mtime-mmin了解详细信息:

 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 

您可以尝试使用iotop工具来显示进程的I / O使用情况(换句话说,哪个顶级进程正在使用您的磁盘),因此您可以跟踪哪个进程负责进入该空间。 另一种方法是使用inotifyinotify-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以在当前文件夹中recursion地查看最大的文件。

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

我通常使用ncdu来探索磁盘空间的使用情况,如果你越来越大的文件夹不能阻止你的系统或ncdu扫描你应该能够find哪些文件夹看起来非常大。