Tips and Traps
-
Always test integrity of the compressed file before you throw away the original archives. I've seen a case before that a large zip file generated in Windows cannot be unzipped correctly in Linux. Not sure what happend though.
-
Zstd is currently the best compression/decompression tool. It supports different levels of compression. For a similar compression ratio, it is generally much faster than other compression tools.
tar.zstd
-
Extract archive.
tar -I zstd -xvf archive.tar.zst
-
Create an archive.
# max compression tar cf - Dropbox/ | zstd -19 -T0 > Dropbox.tar.zstd # good balance bewteen compression ratio and speed tar cf - Dropbox/ | zstd -9 -T0 > Dropbox.tar.zstd
tar.gz or tgz
-
List the content of an archive.
tar -ztvf archive_name.tag.gz
-
Extract the content of an archive to the current directory.
tar -zxvf archive_name.tag.gz
-
Extract the content of an archive to a directory named "exdir".
tar -zxvf archive_name.tag.gz -C exdir
-
Create an archive.
tar -zcvf archive_name.tar.gz /path/to/file_or_dir
-
Create an archive with some files excluded.
tar -zcvf archive_name.tar.gz --exclude='abc' --exclude='xyz' /path/to/file_or_dir
gz
# decompress
gunzip -c archive_name.gz > decompressed_file_name
# or
gzip -cd archive_name.gz > decompressed_file_name
# or
zcat archive_name.gz > decompressed_file_name
Notice that you have to use the -c
option,
otherwise,
the original compressed file is removed.
tar.bz2
# list the archive contents
tar -jtvf archive_name.tar.bz2
# extract the archive contents to the current directory
tar -jxvf archive_name.tar.bz2
# extract the archive contents to a directory named "exdir"
tar -jxvf archive_name.tar.bz2 -C exdir
zip
-
List the content of an archive.
unzip -l archive_name.zip
-
Test the integrity of an archive.
unzip -t archive_name.zip
-
Extract the archive contents into the current directory.
unzip archive_name.zip
-
Extract the archive contents into the directory "exdir".
unzip archive_name.zip -d exdir
-
Create a zip archive.
zip -r archive_name.zip .
-
Create a zip archive with some files excluded.
zip -r -x "Nothanks.jpg" archive.zip images/
rar
# list the archive contents
unrar l file_name
# test integrity of the archive
unrar t file_name
# extract the archive with full names
unrar x file_name
Jar
# extract the archive
jar xf jar-file [archived-file(s)]
7zip
# list the archive contents
7za l file_name
# test the archive contents
7za t file_name
# extract the archive contents with full names
7za x file_name
# extract a file/folder from the archive
7za x archive_name path_to_file_to_be_extracted
If the compressed archive is splitted into several smaller files,
just replace file_name
in the above commands
with the name of the first file of the compressed archive.
For rar
and 7za
,
I'm not sure whether there are options for creating a new directory
to uncompress the archive into.
However, you can always first create an empty directory,
move the archive into it and then uncompress it.
Multiple Archives
The archive related commands (e.g., tar
, zip
, unzip
, etc.) in Linux
does not support decompressing from multiple archives
or compressing files into multiple archives directly.
To extract content from multiple archives,
you need to first concatenate them into a single one.
For example,
you can use the following command to unzip archives
BigDataLite-3.0.zip.001
, BigDataLite-3.0.zip.002
, BigDataLite-3.0.zip.003
,
BigDataLite-3.0.zip.004
, BigDataLite-3.0.zip.005
and BigDataLite-3.0.zip.006
.
# concatenate zipped archives into a single one
cat BigDataLite-3.0.zip.00? > BigDataLite-3.0.zip
# unzip the combined archive
unzip BigDataLite-3.0.zip
To compress files into multiple archives,
you have to first compress them into a single archive
using one of the commands introduced before
and then split the single archive into multiple ones
using the command split
.
For example,
the following command split the archive WinTPC_1.tar.gz
into smaller ones named WinTPC_1.tar.gz_part??
with size around 2.7G.
split -b 2700M -d WinTPC_1.tar.gz WinTPC_1.tar.gz_part
An alternative way (and better in my opinion) is to specify the number of archives (with about equal size) to split into.
split -n 5 -d xp_2.tar.gz xp_2.tar.gz_part