Linux archives
Jump to navigation
Jump to search
TAR, GZ, BZIP
Working with archives in linux where tar = tape archive and the most common used options are:
-c
- create a new tar file-x
- extract file-t
- test list the contents of an archive-z
- compress use gzip compress, extention .tar.gz-j
- compress use bzip2 compress, extention .tar.bz2-v
- verbose displays files to compress or uncompress-f
- file specify the new archive name or an archive to extract from-r
- flag to append the additional files to the archive-u
- updating a file
- Compress
Create a compressed .tar.gz archive
#archive a directory and everything under (recursively), the dir tree will be preserved eg. /dir/to/be/compressed/ when you extract
tar -czvf archive.tar.gz /dir/to/be/compressed/
tar -czvf archive.tar.gz /path/to/*.conf #archive only files matching *.conf
Create a compressed archive controlling directory tree structure
tar -czvf archive.tar.gz -C directory/level1/ .
# -C change current working directory
# . archive all files from a current working directory, this way when you extract it will extract to to the current working dir
Compress each directory in current directory into separate zip
$ for i in */; do echo tar -czvf "${i%/}.tar.gz" "$i"; done #test
$ for i in */; do tar -czvf "${i%/}.tar.gz" "$i"; done #run
$ for i in */; do rm -rf "$i"; done
- Extract
Extract whole archive, use -t
to test
tar -xzvf archive.tar.gz
A single file from compressed .tar.gz, use -t
to test
tar -xzvf archive.tar.gz myscript.txt
tar xvf archive.tar --strip-components=1 -C anotherDirectory/ testfile1
# --strip-components=NUMBER Strip NUMBER leading components/directories from file names on extraction
A single directory (here conf directory) to specific directory (here /tmp/logs from compressed .tar.gz, use -t
to test
tar -xzvf archive.tar.gz conf -C /tmp/logs
- Preview files inside archive
tar -tzvf {.tar.gz} tar -tjvf {.tbz2}
Zip
Install zip and unzip then use interactive method:
- Extract using default options, retaining directory structure, if password protected you will be prompted
unzip file.zip
Enter password: *** # <- only when password protected
- Compress file or directory
zip name.zip directory/*
zip name.zip file1 file2 file3
# Encrypted password protected zip
zip --encrypt secure.zip file1 file2
Enter password: ***
Verify password: ***
adding: file (deflated 8%)
# Create an encrypted ZIP archive from a folder /var/log/
zip --encrypt -r secure.zip /var/log/
Warning! The standard ZIP encryption is very weak and could be cracked easily.
Compress each directory in current directory into separate zip
$ for file in */; do echo zip -r "${file%/}.zip" "$file"; done # Test
$ for file in */; do zip -r "${file%/}.zip" "$file"; done # Run