使用相对路径压缩文件?

Bla*_*ies 4 macos bash zip path

我正在尝试创建 USB 密钥的备份。为此,我需要压缩 USB 密钥 ( /Volumes/<USB KEY NAME>/) 的内容。我暂时有这个代码
zip -r /Volumes/<USB KEY NAME>/* 这似乎有效,除了当我提取档案时,我得到:

(为了简化目的(和懒惰),<USB KEY NAME>+(<DATE>).zipArchive.zip

Archive.zip
    -> Volumes
        -> <USB KEY NAME>
            -> <USB KEY CONTENT>
                -> ...
Run Code Online (Sandbox Code Playgroud)

如何获得:

Archive.zip
    -> <USB KEY NAME>
        -> <USB KEY CONTENT>
            -> ...
Run Code Online (Sandbox Code Playgroud)

我知道这与绝对/相对路径有关,但这就是我所知道的。我怎么能这样做?

PS:我在 MacOS 上

小智 6

尝试使用该-j选项。

它只存储保存文件的名称(垃圾路径),不存储目录名称。默认情况下,zip将存储完整路径(相对于当前路径)。


Daw*_*ong 6

正如man zip告诉我们的那样,

-j --junk-paths 仅存储已保存文件的名称(垃圾路径),不存储目录名称。默认情况下,zip 将存储完整路径(相对于当前目录)

但是,-j会丢弃所有路径信息,这导致所有文件都放在同一个包中,没有任何路径信息。

方法一:更改当前目录( cd)

cd /Volumes; zip -rq $(OLDPWD)/Archive.zip <USB_Key_Name>; cd -
Run Code Online (Sandbox Code Playgroud)

方法 2:符号链接会有所帮助

ln -s /Volumes/<USB_Key_Name> . # create symlink to avoid cd
zip -rq Archive.zip <USB_Key_Name>
rm <USB_Key_Name> # remove symlink
Run Code Online (Sandbox Code Playgroud)