更改工作目录


13

我正在尝试压缩目录

/home/cyrus/sql

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

/ $ zip -b /home/cyrus sql.zip /home/cyrus/sql

但是当我检查压缩文件时:

/ $ 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

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

Answers:


10

来自man zip

-b path

 --temp-path path

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

zip -b /tmp stuff *

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

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


14

如果要查看zip给定目录的内容并将zip文件存储在当前目录中,可以编写它:

(cd /some/dir && zip -r - dir-there) > file.zip

5

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

 -b path
      Use the specified path for the temporary  zip  archive.

尝试这个:

cd /home/cyrus && zip sql.zip sql

或者,cd /home/cyrus && zip /sql.zip sql如果您要在根目录中创建zip文件。
2013年

2

不知道我是否理解这个权利,但是-b不会更改根文件夹。它将临时zip归档文件放在目录/ home / cryus中,完成后将sql.zip复制到当前目录。仅当更新现有存档时,此选项才有用,并且包含此旧存档的文件系统没有足够的空间来同时容纳新旧存档。

尝试使用:

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


1
-j可能不正确;我假设OP希望保留相对路径,而不是删除所有路径。
13年


0

将要压缩的文件夹符号链接到当前目录可能更容易。这样,您就可以留在自己的位置。

ln -s /path/to/whatever .
zip -r myzip whatever

如果需要,可以使用符号链接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.