Sometimes it is useful to store a group of files in one file so that they can be backed up, easily transferred to another directory, or even transferred to a different computer. It is also sometimes useful to compress files into one file so that they use less disk space and download faster.
It is important to understand the distinction between an archive file and a compressed file. An archive file is a collection of files and directories that are stored in one file. The archive file is not compressed — it uses the same amount of disk space as all the individual files and directories combined. A compressed file is a collection of files and directories that are stored in one file and stored in a way that uses less disk space than all the individual files and directories combined. If you do not have enough disk space on your computer, you can compress files that you do not use very often or files that you want to save but do not use anymore. You can even create an archive file and then compress that to save even more disk space.
An archive file is not compressed, but a compressed file can be an archive file.
Red Hat Linux includes a graphical utility called File Roller that can compress, decompress, and archive files and directories. File Roller supports common Unix and Linux file compression and archiving formats, and has a simple interface and extensive help documentation if you need it. It also has the advantage of being integrated into the graphical desktop environment and graphical file manager.
To start File Roller, click Main Menu > Accessories > Archive Manager. You can also start File Roller from a shell prompt by typing file-roller. Figure 9-1 shows File Roller in action.
Figure 9-1: File Roller
If you using a file manager (such as Nautilus), you can simply double-click the file you wish to unarchive or decompress to start File Roller. The File Roller browser window will appear with the decompressed/unarchived file in a folder for you to extract or browse.
To decompress and/or unarchive a file, click the Open toolbar button. A file menu will pop up, allowing you to choose the archive you wish to work with. For example, if you have a file called foo.tar.gz located in your home directory, highlight the file and click OK. The file will appear in the main File Roller browser window as a folder, which you can navigate by double-clicking the folder icon. File Roller preserves all directory and subdirectory hierarchies, which is convenient if you are looking for a particular file in the archive. You can extract individual files or entire archives by clicking the Extract button, choosing the directory where you would like to save the unarchived files, and clicking OK.
If you need to free some hard drive space, or send multiple files or a directory of files to another user over email, File Roller allows you to create archives of your files and directories. To create a new archive, click New on the toolbar. A file browser will pop up, allowing you to specify an archive name and the compression technique (you can usually leave this set as Automatic and simply type in the file archive name and file name extension in the provided text box). Click OK, and your new archive is now ready to be filled with files and directories. To add files to your new archive, click Add, which will pop up a browser window (see Figure 9-2) that you can navigate to find the file or directory you want to be in the archive. Click OK when you are finished and then click Close to close the archive.
Figure 9-2: Adding Files to an Archive
There is much more you can do with File Roller than is explained here. Refer to the File Roller manual (available by clicking Help > Manual) for more information.
Compressed files use less disk space and download faster than large, uncompressed files. While File Roller is a useful utility for the graphical interface, you can also use the shell prompt to compress files. In Red Hat Linux you can compress files from the shell prompt with the compression tools gzip, bzip2, or zip.
The bzip2 compression tool is recommended because it provides the most compression and is found on most Unix-like operating systems. The gzip compression tool can also be found on most Unix-like operating systems. If you need to transfer files between Linux and other operating system such as Microsoft’s Windows, you should use zip because it is more commonly used on those other operating systems.
To use bzip2 to compress a file, type the following command at a shell prompt:
The file will be compressed and saved as filename.bz2.
To expand the compressed file, type the following command:
The filename.bz2 file is replaced with filename.
You can use bzip2 to compress multiple files and directories into a single archive by listing them with a space between each one:
bzip2 filename.bz2 file1 file2 file3 /usr/work/school
The above command compresses file1, file2, file3, and the contents of the /usr/work/school directory (assuming this directory exists) and places them in a file named filename.bz2.
For more information, type man bzip2 and man bunzip2 at a shell prompt to read the man pages for bzip2 and bunzip2.
To use gzip to compress a file, type the following command at a shell prompt:
The file will be compressed and saved as filename.gz.
To expand the compressed file, type the following command:
The filename.gz is replaced with filename.
You can use gzip to compress multiple files and directories at the same time by listing them with a space between each one:
gzip -r filename.gz file1 file2 file3 /usr/work/school
The above command compresses file1, file2, file3, and the contents of the /usr/work/school directory (assuming this directory exists) and places them in a file named filename.gz.
For more information, type man gzip and man gunzip at a shell prompt to read the man pages for gzip and gunzip.
To compress a file with zip, type the following command:
zip -r filename.zip filesdir
In this example, filename.zip represents the file you are creating, and filesdir represents the directory you want to put in the new zip file. The -r option specifies that you want to include all files contained in the filesdir directory recursively.
To extract the contents of a zip file, type the following command:
You can use zip to compress multiple files and directories at the same time by listing them with a space between each one:
zip -r filename.zip file1 file2 file3 /usr/work/school
The above command compresses file1, file2, file3, and the contents of the /usr/work/school directory (assuming this directory exists) and places them in a file named filename.zip.
For more information, type man zip and man unzip at a shell prompt to read the man pages for zip and unzip.
A tar (tar stands for tape archive, a term which hails back to a time when the only storage media around were tapes) file is a collection of several files and/or directories in one file. This is a good way to create backups and archives.
Some of the options used with tar are listed in Table 9-3.
What It Does
Create a new archive.
When used with the -c option, use the filename specified for the creation of the tar file; when used with the -x option, unarchive the specified file.
Show the list of files in the tar file.
Show the progress of the files being archived.
Extract files from an archive.
Compress the tar file with gzip.
Compress the tar file with bzip2.
To create a tar file, type
tar -cvf filename.tar files/directories
In this example, filename.tar represents the file you are creating, and files/directories represents the files or directories you want to put in the archived file.
You can tar multiple files and directories at the same time by listing them with a space between each one:
tar -cvf filename.tar /home/mine/work /home/mine/school
The above command places all the files in the work and the school subdirectories of the home directory for user mine in a new file called filename.tar in the current directory.
To list the contents of a tar file, type
tar -tvf filename.tar
To extract the contents of a tar file, type
tar -xvf filename.tar
This command does not remove the tar file, but places copies of its contents in the current working directory.
Remember, the tar command does not compress the files by default. To create a tarred and bzipped compressed file, use the -j option as follows:
tar -cjvf filename.tbz
tar files compressed with bzip2 are conventionally given the extension .tbz.
This command creates an archive file and then compresses it as the file filename.tbz. If you uncompress the filename.tbz file with the bunzip2 command, the filename.tbz file is removed and replaced with filename.tar.
You can also expand and unarchive a bzip tar file in one command:
tar -xjvf filename.tbz
To create a tarred and gzipped compressed file, use the -z option:
tar -czvf filename.tgz
tar files compressed with gzip are conventionally given the extension .tgz.
This command creates the archive file filename.tar and then compresses it as the file filename.tgz. (The file filename.tar is not saved.) If you uncompress the filename.tgz file with the gunzip command, the filename.tgz file is removed and replaced with filename.tar.
You can expand a gzip tar file in one command:
tar -xzvf filename.tgz
Type the command man tar for more information about the tar command.