![ZIP 卡在垃圾文件里](https://linux22.com/image/998567/ZIP%20%E5%8D%A1%E5%9C%A8%E5%9E%83%E5%9C%BE%E6%96%87%E4%BB%B6%E9%87%8C.png)
我通常喜欢在向社区询问之前彻底研究我的问题。但现在我陷入困境。我正在使用以下命令:
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/")
或者一开始就从那里运行它。据我所知,您无法手动决定交换文件的存放位置。