使用相对路径压缩文件?

问题描述 投票:0回答:3

我正在尝试创建 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

bash macos path zip
3个回答
11
投票

尝试使用

-j
选项。

它只存储已保存文件的名称(垃圾路径),不存储目录名称。默认情况下,

zip
将存储完整路径(相对于当前路径)。


4
投票

正如

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

0
投票

仅控制目标存档的路径

cd /Volumes/<USB KEY NAME>;
zip -r ../../archive.zip *

  adding: ./file-in-usb-key-name-dir (stored 0%)
  adding: ./subdir/file (stored 0%)
  ...
© www.soinside.com 2019 - 2024. All rights reserved.