Difference between revisions of "Tar"

From Christoph's Personal Wiki
Jump to: navigation, search
(tar pipes)
(General)
Line 17: Line 17:
 
* Backup directory /data and /home with tar command (z - compressed; note the <code>/dev/nst0</code>; '<code>nst0</code>' ''not'' '<code>st0</code>'):
 
* Backup directory /data and /home with tar command (z - compressed; note the <code>/dev/nst0</code>; '<code>nst0</code>' ''not'' '<code>st0</code>'):
 
  % tar -czf /dev/st0 /data /home
 
  % tar -czf /dev/st0 /data /home
  ~OR~
+
  #~OR~
 
  % tar --index-file=foo.log -jcvf /dev/nst0 /data /home
 
  % tar --index-file=foo.log -jcvf /dev/nst0 /data /home
  ~OR~
+
  #~OR~
 
  % tar -jcvf /dev/nst0 /data /home 1>stdout 2>stderr  # Using Bash shell
 
  % tar -jcvf /dev/nst0 /data /home 1>stdout 2>stderr  # Using Bash shell
  ~OR~
+
  #~OR~
 
  % tar -jcvf /dev/nst0 --label="Backup - `date '+%Y-%m-%d'` - /home" /home 1>stdout 2>stderr
 
  % tar -jcvf /dev/nst0 --label="Backup - `date '+%Y-%m-%d'` - /home" /home 1>stdout 2>stderr
  
 
* Display list of files on tape drive:
 
* Display list of files on tape drive:
 
  % tar -tzf /dev/st0
 
  % tar -tzf /dev/st0
Or,
+
#Or,
 
  % tar -tvf /dev/st0
 
  % tar -tvf /dev/st0
  

Revision as of 09:48, 28 May 2007

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

Is far more efficient (and with less problems) to copy files from one location (or machine) to another via 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 a 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