Zip a folder including its sub-folders.


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Zip a folder including its sub-folders.
# 1  
Old 07-10-2008
Zip a folder including its sub-folders.

Hi,

I have a folder that contains a few sub-folders. I would like to zip that folder and KEEP the subfolders. What it does at the moment is taking all the files within the subfolders and zipping them into one big file (zip -r ...). Does anyone know the UNIX command to keep the subfolders in the zipped files?

Thanks.
# 2  
Old 07-10-2008
Hi.

I rarely use zip / unzip, but it worked for me as expected. This script creates a structure, zips it, renames the old directory, unzips from the archive, and compares the 2 resulting directory structures:
Code:
#!/usr/bin/env bash

# @(#) s1       Demonstrate zip collection and expansion of directories.

#  ____
# /
# |   Infrastructure BEGIN

echo
set -o nounset

debug=":"
debug="echo"

## The shebang using "env" line is designed for portability. For
#  higher security, use:
#
#  #!/bin/sh -

TREE=tree
TREE=dtree
TREE=tree-sage

## Use local command version for the commands in this demonstration.

set +o nounset
LC_ALL=C ; LANG=C ; export LC_ALL LANG
echo "Environment: LC_ALL = $LC_ALL, LANG = $LANG"
echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version =o $(_eat $0 $1) zip diff
set -o nounset

echo

# Remove and create directory structure.

rm -rf d1 d2 d1.zip old-d1

mkdir -p d1/d2/d3
echo hi >d1/hi-in-d1
echo hi >d1/d2/hi-in-d1-d2
echo hi >d1/d2/d3/hi-in-d1-d2-d3

echo " Directory to be zipped:"
$TREE ./d1

# |   Infrastructure END
# \
#  ---

echo
echo " Results from processing:"
zip -r d1 d1
ls -go d1.zip

echo
echo " Unzipping:"
mv d1 old-d1
unzip d1

echo
echo " Newly unzipped d1:"
$TREE d1

echo
echo " Old d1:"
$TREE old-d1

echo
echo " Comparison of d1 and old-d1:"
CMP="diff -r"
if $CMP d1 old-d1
then
  echo " Directories d1 and old-d1 have the same content."
else
  echo " Directories d1 and old-d1 fail to compare."
fi

exit 0

Producing:
Code:
$ ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
SunOS 5.10
GNU bash 3.00.16
zip - no version provided for /usr/bin/zip.
diff - no version provided for /usr/bin/diff.

 Directory to be zipped:
./d1
/     d2
/     /     d3
/     /     /     hi-in-d1-d2-d3
/     /     hi-in-d1-d2
/     hi-in-d1

 Results from processing:
  adding: d1/ (stored 0%)
  adding: d1/d2/ (stored 0%)
  adding: d1/d2/d3/ (stored 0%)
  adding: d1/d2/d3/hi-in-d1-d2-d3 (stored 0%)
  adding: d1/d2/hi-in-d1-d2 (stored 0%)
  adding: d1/hi-in-d1 (stored 0%)
-rw-r--r--   1     829 Jul 10 10:45 d1.zip

 Unzipping:
Archive:  d1.zip
   creating: d1/
   creating: d1/d2/
   creating: d1/d2/d3/
 extracting: d1/d2/d3/hi-in-d1-d2-d3
 extracting: d1/d2/hi-in-d1-d2
 extracting: d1/hi-in-d1

 Newly unzipped d1:
d1
d2
/     d3
/     /     hi-in-d1-d2-d3
/     hi-in-d1-d2
hi-in-d1

 Old d1:
old-d1
d2
/     d3
/     /     hi-in-d1-d2-d3
/     hi-in-d1-d2
hi-in-d1

 Comparison of d1 and old-d1:
Common subdirectories: d1/d2 and old-d1/d2
Common subdirectories: d1/d2/d3 and old-d1/d2/d3
 Directories d1 and old-d1 have the same content.

Perhaps you can see from this what you should do next. The man pages and small experiments are often the best road to solutions ... cheers, drl
# 3  
Old 07-10-2008
Hi drl,

I ran your code on my machine alright, but when I access the d1 zipfile through windows I get this:

Image

Now, I would like to see the d2 and d3 subfolders in d1.zip with hi-in-d1-d2-d3 and hi-in-d1-d2 in there respective subfolders. Do you know how to do that by any chance?

Thanks,
gdog

PS: I don't mind doing it with tar if it's easier.

Last edited by gdog; 07-10-2008 at 01:17 PM..
# 4  
Old 07-10-2008
Hi.

You know the directories are there, or at least their properties exist in the zip file because unzip can re-create them.

I don't know anything about winzip. I'd look through all the menus and help information to start with. Perhaps someone will stop by with an answer for that question ... cheers, drl
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Tar.gz/zip folders in a directory with _EBASE string

Hi Folks - Happy Friday and I hope you all are well! What's the easiest way to tar.gz / zip all direct children directories in a folder that have the string _EBASE (suffix)? Thank you! (6 Replies)
Discussion started by: SIMMS7400
6 Replies

2. Shell Programming and Scripting

Gunzip,grep and zip across folders in a subdirectory

I have a simple function that greps within a folder into files that are already gunzipped. This was already written for me so from my understanding fn=$1 specifies that it will look into any file in that folder that is gunzipped and the rest of the script greps the data its looking for and puts it... (3 Replies)
Discussion started by: red56
3 Replies

3. Shell Programming and Scripting

How to auto zip all folders?

Hi, How do I write a script that will automatically find and zip any folder to the same name in a directory and affected recursively?. The zip file should be place in the same directory where the source folder is. Help is appreciated. Thanks in advance. ex: Orange Crayon Blue Crayon... (5 Replies)
Discussion started by: Frozen77
5 Replies

4. Shell Programming and Scripting

Copy Folders and ZIP IT

HI All I have one master folder : ABCXYZ I have sub folder in there : AB XY AZ AC PR AL Now i want to copy AB , PR ,AL in to one new folder and zip it with time stamp. like Pre_02192013_12_32.zip Zip folder should be in master folder. (2 Replies)
Discussion started by: pareshkp
2 Replies

5. Shell Programming and Scripting

Find file and zip without including directory path

Does anyone know of a way to zip the resulting file from a find command? My approach below finds the file and zips the entire directory path, which is not what I need. After scanning the web, it seems to be much easier to perform gzip, but unfortunately the approach must use zip. find `$DIR`... (5 Replies)
Discussion started by: koeji
5 Replies

6. Shell Programming and Scripting

Zip all the files including directories - subdirectories

Hi, Is is possible to zip a folder and all its contents within the folder ( including sub-directories and files) into a zip file? and can regain the same structure if unzipped? Thanks (6 Replies)
Discussion started by: rudoraj
6 Replies

7. UNIX for Dummies Questions & Answers

Create zip without including directories

Hi guys, I'm trying to do the following: zip -r /tmp/foo.zip public/accounts/foo But the zip that's been made has the whole "public/accounts/foo" path. I want only the foo folder to be zipped. How can I do this? Thanks, Elías (2 Replies)
Discussion started by: elioncho
2 Replies

8. UNIX for Dummies Questions & Answers

Zip command (zip folder doesn't include a folder of the same name)

Hi guys, I have a question about the zip command. Right now I have a directory with some files and folders on it that I want to compress. When I run the zip command: zip foo -r I am getting a foo.zip file that once I unzip it contains a foo folder. I want to create the foo.zip, but that... (1 Reply)
Discussion started by: elioncho
1 Replies

9. Windows & DOS: Issues & Discussions

How can I upload a zip folder on a unix path from my windows folder?

Hello, I am an amature at UNIX commands and functionality. Please could you all assist me by replying to my below mentioned querry : How can I upload a zip folder on a unix path from my windows folder? Thanks guys Cheers (2 Replies)
Discussion started by: ajit.yadav83
2 Replies

10. UNIX for Dummies Questions & Answers

zip nesting empty folders

I'm using the following command to zip a project file, but when it finishes, the resulting zip file contains all the directories above the file I wanted zipped, myapp.app, each one empty until you get to the actual app. zip -r myapp.app.zip ... (0 Replies)
Discussion started by: groundlevel
0 Replies
Login or Register to Ask a Question