Bash - compress files with tar command in Linux
In this short article we are going to show how with tar
command we are able to pack or compress files in Linux.
Quick solution:
xxxxxxxxxx
tar -czvf new-archive-name.tar.gz /path/to/existing-directory-or-file
We can select two options:
- packing files together without compression,
- packing files together with compression.
Second one option is more useful when we want to move our files quickly between some devices.
Below example will create compressed archive (gzip algorithm will be used), printing progress in console:
xxxxxxxxxx
tar -czvf new-archive-name.tar.gz /path/to/existing-directory-or-file
or as:
xxxxxxxxxx
tar -c -z -v -f new-archive-name.tar.gz /path/to/existing-directory-or-file
Where:
-c
creates new archive for indicated files (required),-z
uses gzip compression (optional),-v
displays in terminal progress, printing file paths - it is verbose mode (optional),-f
allows to select output archive file path (optional).
Example console output:
xxxxxxxxxx
root@debian:~# tar -czvf reports_2020-01.tar.gz reports/2020-01/
reports/2020-01/log.1.txt
reports/2020-01/log.2.txt
reports/2020-01/log.3.txt
reports/2020-01/log.4.txt
reports/2020-01/users/log.1.txt
reports/2020-01/users/log.2.txt
reports/2020-01/users/log.3.txt
#
When we don't want to print file paths we can remove -v
parameter:
xxxxxxxxxx
tar -czf new-archive-name.tar.gz /path/to/existing-directory-or-file
Example console output:
xxxxxxxxxx
root@debian:~# tar -czvf reports_2020-01.tar.gz reports/2020-01/
#
Below example will create not compressed archive, printing progress in console:
xxxxxxxxxx
tar -cvf new-archive-name.tar /path/to/existing-directory-or-file
Where -z
parameter was removed to turn off compression mode.
Example console output:
xxxxxxxxxx
root@debian:~# tar -cvf reports_2020-01.tar reports/2020-01/
reports/2020-01/log.1.txt
reports/2020-01/log.2.txt
reports/2020-01/log.3.txt
reports/2020-01/log.4.txt
reports/2020-01/users/log.1.txt
reports/2020-01/users/log.2.txt
reports/2020-01/users/log.3.txt
#
Similar to above example when we don't want to print file paths we can remove additionally -v
parameter:
xxxxxxxxxx
tar -cf new-archive-name.tar /path/to/existing-directory-or-file
Example console output:
xxxxxxxxxx
root@debian:~# tar -cf reports_2020-01.tar reports/2020-01/
#
It is possible to indicate many paths to files or directories in following way:
xxxxxxxxxx
tar -czvf new-archive-name.tar.gz /path/to/existing-directory /path/to/existing-file-1 /path/to/existing-file-2 /path/to/other/place/*.txt
That will compress existing-directory, existing-file-1, existing-file-2 and all txt files for located in the /path/to/other/place/
.