找出 FTP 服务器上占用最多空间的内容

找出 FTP 服务器上占用最多空间的内容

我的公司托管了 FTP,目前我们的磁盘配额已超标。我需要一种方法来找出 FTP 上哪些文件夹是罪魁祸首,这样我才能知道是否可以清除任何东西。我没有时间访问每个文件夹来查看文件大小,但我想知道是否有任何软件解决方案可以解决此问题。

答案1

这些都是有用的答案,但在这种情况下并没有真正的帮助。

最后,我能够使用 Filezilla 搜索超过一定大小的文件,并按大小顺序显示它们。这无法给我最大的目录,但它确实给了我最大的文件,这可以说更有用。

不管怎么说,还是要谢谢你!

答案2

这取决于另一端使用的 FTP 服务器软件。

一些类 unix FTP 守护程序支持检索递归目录列表(您将获得类似于 ls -lR 的输出),您可以手动扫描以查找大文件,但这不是标准功能。您可以尝试直接发出命令并查看ls -lR返回结果,或者LIST -lR

如果您可以通过 SSH 访问远程端以及 FTP,那么您可以使用该du命令列出目录大小。如果您处于具有固定配额的区域的顶级目录中,那么发出du即可解决问题,或者du -h如果您希望以 Gb/Mb/Kb 而不是字节为单位输出。此外du -sc *(或du -shc *)将列出当前目录的摘要,而无需单独读取所有子目录。

编辑:我忘记在上面添加,如果您通过命令行 FTP 客户端登录(或者可以在您使用的任何基于 GUI 的客户端中查看完整的活动日志),服务器可能会识别自己(即实际使用的 FTP 守护程序及其版本号)。如果是这样,您可以使用此信息查找服务器的文档,并查看它是否正式支持递归目录列表。

另一个建议:如果您能够承受的带宽浪费比花费在搜索大文件上的时间更多,那么您可以将 FTP 位置递归下载到本地计算机,然后使用本地工具分析那里的文件/目录大小。

更好的选择,但可能只有在运行 Linux 时才可用,是使用基于 FUSE 的 FTP 文件系统(http://sourceforge.net/apps/mediawiki/fuse/index.php?title=NetworkFileSystems#CurlFtpFS) - 这将允许您从本地机器直接在 FTP 文件系统上使用诸如du和之类的命令。find

答案3

如果您可以登录到 FTP 服务器(并且它运行的程序足够类似 unix),则可以使用 find 或 du 来定位空间用户。

要使用 du 递归查找大文件,您可以使用“du -s *”(或“du -s * | sort -n”)查找最大的目录和文件,然后沿着树递归地向下工作,并集中精力处理这些目录和文件。

要使用 find 查找大文件,请使用“find . -type f -size +nM -print”(这将为您提供所有大于 n MB 的文件的列表)。仔细调整 n 后,它将准确地为您提供大文件。

如果您没有 shell 访问权限,则必须登录托管的 FTP 站点并使用 FTP“dir”命令来获取此信息。我暂时不知道有什么现成的程序可以递归查找大文件,但有几种用于 FTP 镜像的程序,也许其中一个程序允许您提取站点的本地副本,以便您可以在那里进行基于 shell 的发现。

答案4

如果你正在运行 *NIX,那么:

for i in G M K; do du -ah | grep [0-9] | sort -nr -k 1; done | head -n 11

将为您提供 10 个最大的文件。

从您想要搜索的目录运行它。

相关内容