我正在尝试创建 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>
-> ...
如何获得:
Archive.zip
-> <USB KEY NAME>
-> <USB KEY CONTENT>
-> ...
我知道这是关于绝对/相对路径的,但这就是我所知道的。我怎样才能做到这一点?
PS:我使用的是MacOS
尝试使用
-j
选项。
它只存储已保存文件的名称(垃圾路径),不存储目录名称。默认情况下,
zip
将存储完整路径(相对于当前路径)。
正如
man zip
告诉我们的那样,
-j --垃圾路径 仅存储已保存文件的名称(丢弃路径),而不存储目录名称。 默认情况下,zip 将存储完整路径(相对于当前目录)。
但是,
-j
会丢弃所有路径信息,导致所有文件都放在同一个包中,没有任何路径信息。
方法1: 更改当前目录(
cd
)
cd /Volumes; zip -rq $(OLDPWD)/Archive.zip <USB_Key_Name>; cd -
方法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
仅控制目标存档的路径
cd /Volumes/<USB KEY NAME>;
zip -r ../../archive.zip *
adding: ./file-in-usb-key-name-dir (stored 0%)
adding: ./subdir/file (stored 0%)
...