ZIP 卡在垃圾文件里

ZIP 卡在垃圾文件里

我通常喜欢在向社区询问之前彻底研究我的问题。但现在我陷入困境。我正在使用以下命令:

zip -ur zipfile.zip /volume1  

为了将我的整个volume1目录备份到另一个卷中。是的,我知道这不是完美的备份方法,但这正是我所需要的,或者基本上是我老板所需要的。

当我手动运行此命令时,它运行完美,但是当我通过 python 脚本运行它时,我可以在目标机器上清楚地看到该命令正在运行(通过检查top),但是创建了一个具有一些奇怪名称的垃圾文件,即使命令仍在运行但什么也没有发生,没有创建 zip 文件,什么都没有。只有运行的命令和无用的垃圾文件。
目标只是将一些用户文件复制到 zip 文件中,我们不关心目录结构或任何东西,我们只需要将用户特定的文件从共享卷 1 备份到我们的备份硬盘上。

什么原因导致了这种情况?

答案1

建议的解决方案:尝试单独压缩每个目录,并且不要尝试递归压缩以下所有文件/

详细解答:

zip 的手册页解释你使用的选项,例如-r

-r
--recurse-paths
    Travel the directory structure recursively

当您运行以下命令时:

zip -ur zipfile.zip / 

zip 尝试压缩系统中的整个文件(从根目录/及以下)。

zip 使用一个临时文件(在您的情况下,您称之为“垃圾文件”)来保存迄今为止收集的数据。一旦 zip 操作完成,zip 就会将此临时文件移动到生成的 zip 文件中。

在您的情况下,您请求 zip 压缩系统中的所有文件,其中还包括由 zip 创建的临时文件。

这可能会导致无限循环,因为 zip 可能会尝试将临时文件添加到自身。

另外,您可能尝试在文件夹和类似文件下添加设备/dev,但我不确定您是否想压缩它们。

答案2

我知道已经四年了,但我还是要回答这个问题。我确实认为交换文件陷入了循环。zip无论从哪个目录中运行,都会创建交换文件,所以解决方案如下:

  • 例如,我会在计算机上的任何地方创建任何目录/zip/并导航到该目录
  • 然后运行 ​​zip 命令,但添加-j /zip/或放置在您的 zip 目录的任何位置,以便它不会触碰那里的任何内容,包括致命的交换文件。
  • 完整的命令最终看起来像
zip -ur zipfile.zip /volume1 -j /zip/

如果你愿意,这些也可以在 Python 脚本中工作

os.chdir("/zip/")

或者一开始就从那里运行它。据我所知,您无法手动决定交换文件的存放位置。

相关内容