Bla*_*ies 4 macos bash zip path
我正在尝试创建 USB 密钥的备份。为此,我需要压缩 USB 密钥 ( /Volumes/<USB KEY NAME>/) 的内容。我暂时有这个代码
zip -r /Volumes/<USB KEY NAME>/*
这似乎有效,除了当我提取档案时,我得到:
(为了简化目的(和懒惰),<USB KEY NAME>+(<DATE>).zip是Archive.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 上
正如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)