如何列出 sftp 服务器中的所有文件并获取所有文件的总大小?

如何列出 sftp 服务器中的所有文件并获取所有文件的总大小?

我使用连接到 sftp 服务器

sftp -i key.pem user@server

服务器包含日志,我可以使用 列出长达 4 天的日志ls。问题是 ls 似乎无法获取超过 4 天的日志。我想知道如何列出目录中的所有日志并获取它们的总大小?

关于尺寸的类似问题已被问到这里并提供了使用的解决方案du -hc。但我的 sftp 服务器上不存在此命令,我也没有 ssh 访问权限。有任何想法吗?

答案1

lftp有一个du命令并且支持sftp协议:

lftp sftp://user@host

或者指定要使用的 ssh 密钥并跳过密码提示:

lftp -e 'set sftp:connect-program ssh -axi key.pem' sftp://user:@host

并在提示符下运行du(或du -ba列出每个文件及其大小(以字节为单位),或du -ha使用后缀)sftp。请注意,它与 Unixdu命令不同,它给出的是表观大小而不是磁盘使用情况,并且不包括目录文件的大小。

如果ls没有列出超过 4 天的文件,最可能的解释是它们不存在或不再存在。或客户端ls的命令将只执行sftplftpSFTP 协议中的“读取目录”查询或一系列查询检索目录内容。如果服务器不发送其中的内容,并且除了通过 SFTP 之外您没有任何其他方式访问数据,那么您几乎无能为力。

相关内容