更改工作目录

Jür*_*aul 17 zip

我正在尝试压缩一个目录

/home/cyrus/sql
Run Code Online (Sandbox Code Playgroud)

我想在压缩文件夹时更改工作目录:

/ $ zip -b /home/cyrus sql.zip /home/cyrus/sql
Run Code Online (Sandbox Code Playgroud)

但是当我检查 zip 文件时:

/ $ unzip -l sql.zip

Archive:  sql.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2013-05-30 10:59   home/cyrus/sql/
  1776642  2013-05-23 10:22   home/cyrus/sql/wordpress.sql
---------                     -------
  1776642                     2 files
Run Code Online (Sandbox Code Playgroud)

根文件夹应该是sql. 我做错了什么?

Sté*_*las 22

如果要zip将给定目录的内容存储zip在当前目录中,可以这样写:

(cd /some/dir && zip -r - dir-there) > file.zip
Run Code Online (Sandbox Code Playgroud)


Mat*_*DMo 11

来自man zip

-b path

 --temp-path path
Run Code Online (Sandbox Code Playgroud)

使用临时 zip 存档的指定路径。例如:

zip -b /tmp stuff *
Run Code Online (Sandbox Code Playgroud)

将临时 zip 存档放在目录 /tmp 中,完成后将 stuff.zip 复制到当前目录。当更新现有存档并且包含此旧存档的文件系统没有足够空间同时保存旧存档和新存档时,此选项很有用。在某些情况下进行流式传输以避免需要数据描述符时也可能很有用。请注意,使用此选项可能需要 zip 花费更多时间将存档文件复制到目标文件系统。

默认情况下zip存储相对于当前目录的完整路径。如果您希望您的 zipfile 将您的sql目录作为根目录,则需要从该/home/cyrus目录运行该命令。

  • “zip”在存档中存储完整路径很奇怪。 (2认同)

小智 7

将您尝试压缩的文件夹符号链接到当前目录可能会更容易。这样您就可以留在原地。

ln -s /path/to/whatever .
zip -r myzip whatever
Run Code Online (Sandbox Code Playgroud)

如果您愿意,它们可以提供符号链接。


Chr*_*own 5

-b指定zip应该把临时文件放在哪里,而不是它应该在某处更改目录。来自man zip

 -b path
      Use the specified path for the temporary  zip  archive.
Run Code Online (Sandbox Code Playgroud)

尝试这个:

cd /home/cyrus && zip sql.zip sql
Run Code Online (Sandbox Code Playgroud)