通过SFTP获取远程目录大小

lao*_*lux 3 linux openssh sftp

我想使用 SFTP 获取远程目录的大小。在本地,我会运行du -sh,但我的 OpenSSHsftp客户端没有该选项。我想指出的是,我没有 SSH shell 访问权限,因此任何连接都ssh user@server将被删除。

有任何想法吗?也许编写解决方案的脚本?例如,我可以想象列出ls -lSFTP 会话中使用的所有远程文件,但我必须解析输出并遍历所有子目录。我也愿意使用与 OpenSSH 不同的客户端。

服务器和客户端都运行Linux。

Kam*_*ski 6

SSHFS使用 SFTP 子系统。这是一个基于FUSE的解决方案,熟悉安全问题。您可以(并且应该)以普通用户身份进行安装:

sshfs user@server:some/path /some/local/mountpoint/
Run Code Online (Sandbox Code Playgroud)

然后在本地使用du -sh。如果您想要的目录路径位于some/path/foo/directory远程系统上,那么您需要使用/some/local/mountpoint/foo/directory

du -sh /some/local/mountpoint/foo/directory
Run Code Online (Sandbox Code Playgroud)

卸载:

fusermount -u /some/local/mountpoint/
Run Code Online (Sandbox Code Playgroud)

注意:上面的示例some/path是相对路径,相对于 SFTP 最初使用的任何远程目录./。字符串./本身(或.空字符串)可用于安装此确切目录。也可以使用绝对路径(例如/bar/baz/dir)。