1

我有一个 bash 脚本,它利用 inotify-tools 等待将 .zip 文件放入根目录下的子结构中。从那里将它们解压缩到另一个目录中。

当我使用 WinSCP 复制 .​​zip 文件时,脚本会正确执行。但是,使用 Filezilla 复制 .​​zip 文件会导致此错误:

End-of-central-directory signature not found.  Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive.  In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.

我用谷歌搜索了这个错误,两个主要问题似乎是旧版本的 Linux 解压缩功能,我有一个较新版本,并试图复制大于 2gb 的文件(这个文件不是)

任何人都知道这里的问题,在我看来,Linux 试图在脚本完全复制到磁盘之前解压缩它?就像我说的,只有 filezilla 有这个错误,我没有用 winSCP 得到它

4

1 回答 1

0

我相信您的主要问题是您尝试在 ZIP 仍在传输时对其进行处理。可能发生的情况是,一旦启动传输,WinSCP 就会创建一个临时文件来存储传输的数据。该事件将在 zip 文件完全传输之前触发您的脚本。

这可以解释为什么您会收到此错误:

未找到中央目录结束签名。该文件不是 zipfile,

所以解决方案是有两个文件夹,一个用于传输,一个用于完成。它们应该在同一个文件系统中。传输完成后,只需从一个文件夹移动到另一个文件夹即可。

于 2013-07-17T12:54:04.383 回答