【问题标题】:Error from 7z cannot open <file>.tmp Permission denied来自 7z 的错误无法打开 <文件>.tmp 权限被拒绝
【发布时间】:2015-08-07 23:38:35
【问题描述】:

我有一个使用 7z -tzip -aoa 的归档脚本,它在 unix 上运行并且工作正常。但是当通过 Autosys 运行时,尝试将第二个文件存档到现有存档时总是失败。错误是:

7-Zip 9.20 版权所有 (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip 版本 9.20 (locale=C,Utf16=off,HugeFiles=on,8 CPUs)

扫描

更新存档 20150807.zip

错误: 7-Zip 无法打开文件 20150807.zip.tmp 权限被拒绝

它没有告诉我它在哪里拥有该 tmp 文件的权限,所以我不知道去哪里找。我已将我认为可能使用的任何文件夹的所有权限设置为 777,但问题仍然存在。不使用 Autosys 时效果很好。

我在下面找到了评论,但它似乎只与 Windows 相关。我想知道如何在 UNIX 上完成这项工作。

我尝试在网上搜索了一段时间,但找不到任何帮助,所以我在这里。 我的第一个问题是当我尝试使用上下文菜单(7-zip > 添加到“xyz.zip”)压缩 C:// 中的文件夹时,出现错误:“访问被拒绝。7-zip 无法打开文件“xyz.zip.tmp” 但是,我可以打开 7-zip 文件夹(“7zFM”)中的文件管理器,以管理员身份运行并将所述文件压缩为 .zip。 这似乎是关于 C:// 目录的安全问题,因为我似乎可以很好地压缩其他文件和文件夹。 有什么帮助吗?

链接 贝壳 贝壳 2012-07-29 你猜对了。您可以 1) 以管理员身份运行 7-Zip 或 2) 将 7-Zip 文件管理器(工具->选项->文件夹)中的工作目录设置为不受保护的目录(例如,清除那里的复选框)并使用“添加到存档...”菜单并在未受保护的目录中创建存档。

【问题讨论】:

    标签: unix 7zip autosys


    【解决方案1】:

    使用 -w 开关设置工作目录。

    【讨论】:

    • 谢谢。这可以绕过问题。我仍然想了解默认情况下在哪里创建 .tmp 文件,这样它就没有权限。它显然在创建 .zip 文件的文件夹中具有权限 - 为什么 .tmp 应该不同?
    • 默认情况下,.tmp 文件是在工作目录中创建的,你使用命令pwd得到的目录
    【解决方案2】:

    7z 不使用当前目录(您通过pwd 获得的目录)作为工作目录。它使用将在其中创建结果存档的那个。

    例如:

    /tmp $ 7z a /folder.7z /folder

    将忽略您在/tmp 中的事实,并首先在/ 中创建一个tmp 文件,然后将结果放入/ 无论您当前的文件夹是什么

    如果您无权在 / 中创建文件,但您有权更新已经存在的存档(一个非常有效的场景),您将得到您所得到的:

    /tmp $ 7z a /folder.7z /folder
    
    7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
    p7zip Version 16.02 (locale=en_US.utf8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz (806E9),ASM,AES-NI)
    
    Open archive: /folder.7z
    --
    Path = /folder.7z
    Type = 7z
    Physical Size = 150
    Headers Size = 150
    Solid = -
    Blocks = 0
    
    Scanning the drive:
    1 folder, 2 files, 0 bytes
    
    Updating archive: /folder.7z
    
    Items to compress: 3
    
    
    Error:
    cannot open file
    /folder.7z.tmp
    Permission denied
    
    
    System ERROR:
    Unknown error -2147024883
    

    另外,如果您从命令行省略存档名称,它将使用您的源目录。 例如,当你这样做时:

    7z a /folder

    它将使用/ 作为工作目录 - 它会尝试在/ 中创建临时文件,并将生成的存档也放在那里。

    要解决这个问题,只需确保存档名称在您的命令行中,并且您对要创建存档的文件夹具有文件创建权限(有时您有权更新存档本身但无法创建dame 文件夹中的新文件)

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      相关资源
      最近更新 更多