通过SFTP连接检查MIME类型

时间:2014-11-11 12:54:34

标签: bash mime-types sftp

我想按 sftp 列出图片并保存此列表,以便其他脚本可以进一步处理它。

不幸的是,那里还有很多其他文件,所以我需要确定哪些是图像。我正在过滤掉文件扩展名错误的所有内容,但我想更进一步检查文件的内容。

在本地计算机上下载所有内容以使用 文件--mime-type 进行检查太慢了。有没有办法在 下载之前检查远程SFTP 上的文件的MIME类型?

3 个答案:

答案 0 :(得分:2)

我们找到了一种方法,只下载前64个字节。它比下载整个文件快得多,但仍足以看它是否看起来像一个图像:

curl "sftp://sftp.example.com/path/to/file.png" -u login:pass -o img.tmp -r 0-64
file --mime-type img.tmp

答案 1 :(得分:0)

SFTP版本6及更新版本支持MIME类型。

大多数SFTP客户端和服务器,包括最广泛使用的OpenSSH,仅支持SFTP版本3.

即使我知道支持SFTP版本6的服务器,如Bitvise或proftpd / mod_sftp,也不支持“MIME类型”属性。

因此,虽然理论上可以通过SFTP确定远程文件的MIME类型,但实际上,您将无法执行此操作。

答案 2 :(得分:0)

您可以使用ssh远程运行任何命令:

ssh <destination> '<command_to_run>'

在这种情况下,这将是:

ssh <remote_machine_name_or_ip_address>  'file --mime-type ./*'