Change working directory

zip

I'm trying to compress a directory at

/home/cyrus/sql

And I wanted to change the working directory when zipping the folder:

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

But when I check the zip file:

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

The root folder should have been sql. What have I done wrong?

Best Answer

From man zip:

-b path

 --temp-path path

Use the specified path for the temporary zip archive. For example:

zip -b /tmp stuff *

will put the temporary zip archive in the directory /tmp, copying over stuff.zip to the current directory when done. This option is useful when updating an existing archive and the file system containing this old archive does not have enough space to hold both old and new archives at the same time. It may also be useful when streaming in some cases to avoid the need for data descriptors. Note that using this option may require zip take additional time to copy the archive file when done to the destination file system.

By default zip stores the full path relative to the current directory. If you want your zipfile to have your sql directory as the root, you'll need to run the command from the /home/cyrus directory.

Related Question