Tar

From Christoph's Personal Wiki
Revision as of 07:53, 28 May 2007 by Christoph (Talk | contribs) (tar pipes)

Jump to: navigation, search

In computing, tar (derived from tape archive) is both file format (in the form of a type of archive bitstream) and the name of the program used to handle such files.

Example usage

tar pipes

  • Copy everything in /foo, to the directory /bar preserving permissions and ownership:
% (cd /foo; tar -cf - . ) | (cd /bar; tar --same-owner -xpf - )
  • You can also use a tar pipe to copy across the network:
% (cd /src; tar -cvf - foo) | (ssh other.machine 'cd /dst; tar -xf -')
#~OR~
tar cf - whatever | ssh remotehost " ( cd /some/path ; tar xf - ) " 
ssh remotehost "( cd /somewhere ; tar cf - something ) " | tar xf -

General

  • Backup directory /data and /home with tar command (z - compressed; note the /dev/nst0; 'nst0' not 'st0'):
% tar -czf /dev/st0 /data /home
~OR~
% tar --index-file=foo.log -jcvf /dev/nst0 /data /home
~OR~
% tar -jcvf /dev/nst0 /data /home 1>stdout 2>stderr  # Using Bash shell
~OR~
% tar -jcvf /dev/nst0 --label="Backup - `date '+%Y-%m-%d'` - /home" /home 1>stdout 2>stderr
  • Display list of files on tape drive:
% tar -tzf /dev/st0

Or,

% tar -tvf /dev/st0
  • Restore /data directory:
% cd /
% mt -f /dev/st0 rewind
% tar -xzf /dev/st0 data

Backup via ssh

% tar zcvf - /data | ssh root@www.example.com "cat > /backup/data.tar.gz"
  • Or, using the dd command:
% tar cvzf - /data | ssh root@www.example.com "dd of=/backup/data.tar.gz"
  • Or, backup to a remote tape device:
% tar cvzf - /data | ssh root@www.example.com "cat > /dev/nst0"
  • Also, using the mt command to rewind the tape and then dump to it:
% tar cvzf - /data | ssh root@www.example.com $(mt -f /dev/nst0 rewind; cat > /dev/nst0)$
  • Finally, restore the data over a ssh session:
% ssh root@www.example.com "cat /backup/data.tar.gz" | tar zxvf -

Miscellaneous commands

  • Exclude certain files from a tar archive:
% tar -zcvf /home/backup.tar.gz --exclude='foo' --exclude='bar' /home/bob
  • Or, list files to exclude in a file (one filename per line):
% tar -zcvf /home/backup.tar.gz -X exclude.txt /home/bob

Backup script (example)

Note: Taken from http://wiki.novell.com/index.php/Nbackup

#!/bin/bash
rm /var/log/nightly-backup.*
echo "@Backup Begins ====================" > /var/log/nightly-backup.log
date >> /var/log/nightly-backup.log
date > /var/log/nightly-backup.errors
mt -f /dev/nst0 rewind >> /var/log/nightly-backup.log 2>> /var/log/nightly-backup.errors
echo "-- System backup" >> /var/log/nightly-backup.log
tar cvf /dev/nst0 --label="System Backup - `date '+%d-%B-%Y'`" \
     --totals -X /etc/backup.excludes / \
     >> /var/log/nightly-backup.log 2>> /var/log/nightly-backup.errors
echo "-- NSS Backup" >> /var/log/nightly-backup.log
/opt/novell/sms/bin/nbackup -cvf /dev/nst0 \
     --label="NSS Backup - `date '+%d-%B-%Y'`" \
     -U local-linux-admin-user \
     -P password /media/nss/MOUNTPOINT/ \
     >> /var/log/nightly-backup.log \
     2>> /var/log/nightly-backup.nss
echo "-- Rewinding and Ejecting Tape" >> /var/log/nightly-backup.log
mt -f /dev/nst0 rewoff >> /var/log/nightly-backup.log 2>> /var/log/nightly-backup.errors
date >> /var/log/nightly-backup.log
echo "@Backup Ends ====================" >> /var/log/nightly-backup.log

See also

External links

Tutorials

Linux command line programs
File and file system management: cat | cd | chmod | chown | chgrp | umask | cp | du | df | file | fsck | ln | ls | lsof | mkdir | more | mount | mv | pwd | rcp | rm | rmdir | split | touch | tree
Process management: anacron | at | chroot | cron/crontab | kill | nice | ps | sleep | screen | time | timex | top | nice/renice | wait
User Management/Environment: env | finger | id | locale | mesg | passwd | su | sudo | uname | uptime | w | wall | who | write
Text processing: awk | cut | diff | ex | head | tac | tee | iconv | join | less | more | paste | sed | sort | tail | tr | uniq | wc | xargs | perl
Shell programming: echo | expr | unset Printing: lp
Communications:
inetd | netstat | ping | rlogin | traceroute
Searching:

find | grep/egrep/fgrep | strings

Miscellaneous:

banner | bc | cal | man | yes