Tar is an archival system. It helps bundling many directories and files into a single ‘tarball’. This is convenient for backup and remote transferring purposes. This app is often composed with compression plugins such as Gunzip (normal compression) or tb2 (high) to reduce the overall tarball size. This makes the output even more compact and suitable to be sent over the wire.
Here are a few usual switches:
c : create new archive
x : extract archive
t : list content (not create nor extract)
r : record or append
v : verbosely display progress
p : preserve permissions
f : file name type
z : expect compression
j : high compression often signified with the file suffix .bz2
W : verify archive (doesn't work if gzip or tbz is used)
-C : change extraction direction into a specific path
Some common usage examples:
# Compress the whole /home directory timeStamp=$(date +"%Y-%m-%d_%H-%M-%S") backupFile=/root/backup/"$HOSTNAME"_"$timeStamp"_backup.tar.gz objectToBackup=/home tar -czvpf $backupFile $objectToBackup # Compress the whole /home directory with tb2 high compression timeStamp=$(date +"%Y-%m-%d_%H-%M-%S") backupFileBz2=/root/backup/"$HOSTNAME"_"$timeStamp"_backup.tar.bz2 tar -cvjf $backupFile $objectToBackup # Extract the compressed archive to the root directory to recreate the original hierarchy extractTo=/ # WARNING: this will overwrite files in the /home path tar -xzvf $backupFile -C $extractTo tar -xzvf $backupFileBz2 -C $extractTo # Create an uncompressed archive timeStamp=$(date +"%Y-%m-%d_%H-%M-%S") usersDatabaseBackup=/root/backup/"$HOSTNAME"_"$timeStamp"_users.tar holdingDirectory="${usersDatabaseBackup%/*}" mkdir -p $holdingDirectory && touch -f $usersDatabaseBackup # Create folder and create empty file prior to creating tarball cd $holdingDirectory && tar -cvf $usersDatabaseBackup passwd # Add another file into the archive (only works on uncompressed archives) cd $holdingDirectory && tar -rvf $usersDatabaseBackup {group,shadow,gshadow} # List contents tar -tf $usersDatabaseBackup
Categories: