Linux archives
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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 file_to_extract.log tar xvf archive.tar --strip-components=1 -C anotherDirectory/ file_to_extract.log # --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}
- Extract multiple archives at once
for file in *.tar.gz; do tar -xzvf "$file"; done cat *.tar.gz | tar -xzvf - -i # -i, --ignore-zeros - ignore blocks of zeros in archive (normally mean EOF)
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