我正在运行 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 扫描,您应该能够通过查看哪些文件夹看起来异常大来找到。