I would like to know whether it is possible to do the following via CLI.

I have a Folder F which contains several sub folders and some files. I want to compress folder F into .zip file with the "password-only-extract".

up vote 55 down vote accepted

Go to the relevant folder using the cd command like this:

cd /path/to/folder/

(If your folder F is in your Home folder, you can just do cd ~.)

Then, type in your terminal:

zip -er F.zip F

This will prompt you for a password. Give it, and that will create a password-protected zip file from that folder.

  • -e enables encryption for your zip file. This is what makes it ask for the password.
  • -r makes the command recursive, meaning that all the files inside the folder will be added to the zip file.
  • F.zip is the name of the output file.
  • F is the folder you want to zip.

There is an option called -P that will allow you to pass the password in the command itself, but that is not good because there is always the threat of over-the-shoulder peeking. Also other users can see the password by using ps -ef command if you use -P switch. With that -P switch, the command will look like this:

zip -P password -r F.zip F
  • Visit man zip for more information.
  • -e means encrypt – dedunumax Sep 8 '13 at 12:11
  • Hey I just edited your question to include a little bit of context. But can you edit it to include your -e means encrypt comment, as well as the meaning of the -r option. Thanks! – Alaa Ali Sep 8 '13 at 12:16
  • Tx Dedunu for your input.Just one more clarification needed.What if I need to automate this ...What I mean is if instead of prompting for a password can I set a password in the command itself ? – UnderDog Sep 8 '13 at 12:19
  • I added that also. – dedunumax Sep 8 '13 at 12:24
  • 1
    But it is higly unrecommended to use because your history will be recorded. otherwise other users can see your password with "ps aux" – dedunumax Sep 8 '13 at 12:28

The encryption of zip files is weak and can be broken very easily. Instead use 7zip.

7z a -p Fdirectory.7z /path/to/F
  • a command tells 7zip to add files.
  • -p You can either, leave it blank so it asks you interactively or type your password here.
  • Fdirectory.7z is the name of the to-be-created archive.
  • /path/to/F is the path of your directory. It can be relative or full path.

Is recommendable not typing the password in the shell since it's visible to anyone with access to the /proc directory.

  • 3
    It seems if you pass -p only to 7z and omit the password, it asks for it interactively - even a second time for confirmation. – ssc May 14 '15 at 17:48
  • @ssc that is the most useful option, yet it isn't in the manual pages.. – Braiam May 14 '15 at 19:48
  • I tried the above command to compress a folder with few files totaling ~19kB in size. Yet It takes about 2 minutes! Why it takes so long? – BringBackCommodore64 Oct 24 '16 at 11:34
  • 2
    @BringBackCommodore64 Don't use the -r flag to recurse. 7z will recurse the source directory without that flag. -r will instead add all files and subdirectories of the current working directory. The man page for 7z specifically warns against this and says that this flag should be avoided. linux.die.net/man/1/7z – Håken Lid Jan 5 '17 at 22:04
  • 1
    @rubo77 any format is liable to bruteforcing, but 7zip algo isn't easily breakable as shown by the very answer where >12 characters password might be impossible. – Braiam Feb 7 at 12:09

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.