7zip 是否会提取到临时文件然后将临时文件重命名为实际目标?

7zip 是否会提取到临时文件然后将临时文件重命名为实际目标?

我问这个问题是因为我希望能够解压一个档案,该档案可能还包含调用 7zip 来解压档案的程序。Linux/UNIX 允许在使用文件时删除或重命名文件,但不允许打开文件进行写入。

答案1

答案是肯定的,也是否定的。

使用 7zip 的提取命令不应该创建临时文件。但在 Windows 上使用 Windows 资源管理器拖放时确实会发生这种情况(取自文档http://www.7-zip.org/faq.html,ctl-f 搜索 temp)。

但你使用的是 Linux。

为了 100% 确保这种情况不会发生在 Linux 上,我创建并提取了一个大型档案,并通过 strace 运行该程序:

strace -a88 -- 7z e byob.7z 2>&1

我只看到当前工作目录中的现有文件在覆盖之前取消链接,并且唯一访问的文件是当前工作目录中的文件。

请自行测试以验证我没有遗漏任何东西。

我希望这对你有帮助。

答案2

您的问题是关于可执行文件(或脚本) ,调用创建新文件(在同一位置)file1的机制。file1

据我了解,Unix 上的文件系统file1在打开(用于执行)时需要进行破坏。发生这种情况的方式是,破坏会导致原始文件file1被取消链接,但由于它是打开的,因此实际上并没有被删除。但是,它不再占用file1该目录中的名称。新的文件file1在单独的位置创建(使用正确的名称)。当旧文件file1完成执行并退出时,它将被删除。不过,您应该保留新的file1现有文件。

警告:这主要是基于我的部分知识的猜测。也许这里有更多文件系统概念的人会肯定或纠正它。同时,我建议您只将此答案视为理论答案,不要在没有进一步实验验证的情况下以此为基础解决问题。

相关内容