Amazon s3 can';t在goofys挂载文件夹中创建zip文件

Amazon s3 can';t在goofys挂载文件夹中创建zip文件,amazon-s3,amazon-linux,goofys,Amazon S3,Amazon Linux,Goofys,我尝试在装载的目录中创建zip文件,但失败,错误消息如下: $ su - foo-user $ zip hoge.zip hoge updating: hoge zip I/O error: Operation not supported zip error: Input file read failure (was zipping hoge) 有什么线索可以解决这个问题吗 我试过的 在另一个目录中创建zip文件并在装载点复制成功。 因此,似乎不是许可/授权问题 $ zip /tmp/hoge

我尝试在装载的目录中创建zip文件,但失败,错误消息如下:

$ su - foo-user
$ zip hoge.zip hoge
updating: hoge
zip I/O error: Operation not supported
zip error: Input file read failure (was zipping hoge)
有什么线索可以解决这个问题吗

我试过的 在另一个目录中创建zip文件并在装载点复制成功。 因此,似乎不是许可/授权问题

$ zip /tmp/hoge.zip hoge
  adding: hoge (stored 0%)
$ ll /tmp/hoge.zip
-rw-rw-r-- 1 foo-user foo-user   163 Apr  4 17:52 hoge.zip
$ cp /tmp/hoge.zip (path of the mount-point)
$ ll
total 5
-rw-r--r-- 1 foo-user foo-user    5 Mar 26 10:56 hoge
-rw-r--r-- 1 foo-user foo-user  163 Apr  4 17:48 hoge.zip
系统配置
  • 操作系统:亚马逊Linux(EC2)
  • Goofys版本:0.19.0-use
装载点的权限:

drwxr-xr-x  2 foo-user foo-user 4096 Apr  4 17:48 s3
输入文件的权限:

-rw-r--r-- 1 foo-user foo-user 5 Mar 26 10:56 hoge
设置
/etc/fstab

(path of goofys installed)/goofys#(s3-bucket-name) (path of the mount point) fuse _netdev,allow_other,--file-mode=0644,--uid=502,--gid=502 0 0
foo用户的Uid/gid

$ id
uid=502(foo-user) gid=502(foo-user) groups=502(foo-user)

S3不是一个文件系统。Goofys试图(令人钦佩地)弥合文件系统和对象存储之间的鸿沟,但存在无法克服的阻抗不匹配,需要妥协或限制。Goofys选择了最佳性能的路径:

在S3上很难支持或转换为多次往返的事情要么失败(随机写入)

Zip文件创建使用随机写入。这就解释了为什么使用
-b
选项可以解决这个问题。通过创建一个临时文件,然后复制它,可以避免对bucket的随机写入


对S3的随机写入只能通过显著延迟写入或通过每次随机写入重复覆盖对象来完成,这将不会很好地执行,并可能牺牲可靠性、耐用性或一致性。

goofys无法创建zip文件,原因是sqlbot建议的随机写入。s3fs是一个类似的程序,它确实支持这一点。

我避免了指定zip命令的-b选项的问题:
zip-b/tmp hoge.zip hoge