Magnetic tape is a non-volatile storage medium consisting of a magnetic coating on a thin plastic strip. Nearly all recording tape is of this type, whether used for video, audio storage or general purpose digital data storage using a computer. How do I make backup using tapes under Linux operating systems?
Linux (and other Unixish system) use mt command to control magnetic tape drive operation. You need to use mt command while working with tape drive. It allows you to reading and writing to tape.
The default tape drive under Linux is /dev/st0 (first SCSI tape device name). You can read more about tape drives naming convention used under Linux here. Following paragraph summaries command you need to use control tape drive for backup/restore purpose.
Rewind tape drive:
# mt -f /dev/st0 rewind
Backup directory /www and /home with tar command (z - compressed):
# tar -czf /dev/st0 /www /home
Find out what block you are at with mt command:
# mt -f /dev/st0 tell
Display list of files on tape drive:
# tar -tzf /dev/st0
Restore /www directory:
# cd /
# mt -f /dev/st0 rewind
# tar -xzf /dev/st0 www
Unload the tape:
# mt -f /dev/st0 offline
Display status information about the tape unit:
# mt -f /dev/st0 status
Erase the tape:
# mt -f /dev/st0 erase
You can go BACKWARD or FORWARD on tape with mt command itself:
(a) Go to end of data:
# mt -f /dev/nst0 eod
(b) Goto previous record:
# mt -f /dev/nst0 bsfm 1
(c) Forward record:
# mt -f /dev/nst0 fsf 1
Replace /dev/st0 with your actual tape drive name.
Linux Tape Backup Example
To backup to multiple tape use the following command (backup /home file system):
# tar -clpMzvf /dev/st0 /home
To compare tape backup, enter:
# tar -dlpMzvf /dev/st0 /home
To restore tape in case of data loss or hard disk failure:
# tar -xlpMzvf /dev/st0 /home
Where,
- d : find differences between archive and file system
- x : extract files from an archive
- l : list the contents of an archive
- p : ignore umask when extracting files
- M : create/list/extract multi-volume archive (multiple tapes)
- z : Compress backup using gzip
- v : verbosely list files processed
- f /dev/st0 : Tape device name
- /home : Backup /home file system
Putting it all tougher
#!/bin/bash # A UNIX / Linux shell script to backup dirs to tape device like /dev/st0 (linux) # This script make both full and incremental backups. # You need at two sets of five tapes. Label each tape as Mon, Tue, Wed, Thu and Fri. # You can run script at midnight or early morning each day using cronjons. # The operator or sys admin can replace the tape every day after the script has done. # Script must run as root or configure permission via sudo. # ------------------------------------------------------------------------- # Copyright (c) 1999 Vivek Gite <vivek@nixcraft.com> # This script is licensed under GNU GPL version 2.0 or above # ------------------------------------------------------------------------- # This script is part of nixCraft shell script collection (NSSC) # Visit http://bash.cyberciti.biz/ for more information. # ------------------------------------------------------------------------- # Last updated on : March-2003 - Added log file support. # Last updated on : Feb-2007 - Added support for excluding files / dirs. # ------------------------------------------------------------------------- LOGBASE=/root/backup/log # Backup dirs; do not prefix / BACKUP_ROOT_DIR="home sales" # Get todays day like Mon, Tue and so on NOW=$(date +"%a") # Tape devie name TAPE="/dev/st0" # Exclude file TAR_ARGS="" EXCLUDE_CONF=/root/.backup.exclude.conf # Backup Log file LOGFIILE=$LOGBASE/$NOW.backup.log # Path to binaries TAR=/bin/tar MT=/bin/mt MKDIR=/bin/mkdir # ------------------------------------------------------------------------ # Excluding files when using tar # Create a file called $EXCLUDE_CONF using a text editor # Add files matching patterns such as follows (regex allowed): # home/vivek/iso # home/vivek/*.cpp~ # ------------------------------------------------------------------------ [ -f $EXCLUDE_CONF ] && TAR_ARGS="-X $EXCLUDE_CONF" #### Custom functions ##### # Make a full backup full_backup(){ local old=$(pwd) cd / $TAR $TAR_ARGS -cvpf $TAPE $BACKUP_ROOT_DIR $MT -f $TAPE rewind $MT -f $TAPE offline cd $old } # Make a partial backup partial_backup(){ local old=$(pwd) cd / $TAR $TAR_ARGS -cvpf $TAPE -N "$(date -d '1 day ago')" $BACKUP_ROOT_DIR $MT -f $TAPE rewind $MT -f $TAPE offline cd $old } # Make sure all dirs exits verify_backup_dirs(){ local s=0 for d in $BACKUP_ROOT_DIR do if [ ! -d /$d ]; then echo "Error : /$d directory does not exits!" s=1 fi done # if not; just die [ $s -eq 1 ] && exit 1 } #### Main logic #### # Make sure log dir exits [ ! -d $LOGBASE ] && $MKDIR -p $LOGBASE # Verify dirs verify_backup_dirs # Okay let us start backup procedure # If it is monday make a full backup; # For Tue to Fri make a partial backup # Weekend no backups case $NOW in Mon) full_backup;; Tue|Wed|Thu|Fri) partial_backup;; *) ;; esac > $LOGFIILE 2>&1
Customize above shell script as per your needs and setup a cron job to execute it:
@midnight /path/to/tapebackup.sh
See also:
- Howto - Use tar command through network over ssh session (i.e. writing to tape on a remote Linux server system)
- Download : Linux / UNIX Tar Full and Incremental Tape Backup Shell Script
- This small how-to covered all options used in day today life; however, it is highly recommended that you go through man pages of mt and tar command for more options/information.
Featured Articles:
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- My 10 UNIX Command Line Mistakes
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- Top 20 OpenSSH Server Best Security Practices
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Linux Video Editor Software
'OS > Linux' 카테고리의 다른 글
[Linux] RPM 사용하기 (0) | 2011.02.09 |
---|---|
[Linux] 레드햇 패키징 하우투 RPM HOWTO (RPM at Idle) (0) | 2011.02.09 |
[Linux] lsscsi utility for Linux (0) | 2010.10.30 |
[Linux] MondoRescue HOWTO (0) | 2010.01.08 |
[Linux] Mondo Rescue - GPL disaster recovery solution. (0) | 2010.01.08 |
[Linux] Red Hat Enterprise Linux 4: 시스템 관리 안내서 - 자원 모니터링 (0) | 2009.12.22 |
[Linux] How do I rescan the SCSI bus to add or remove a SCSI device without rebooting the computer? (0) | 2009.12.22 |
[Linux] The Linux 2.4 SCSI subsystem HOWTO - Mid Level, Unifying layer (0) | 2009.07.02 |
[Linux] The Linux 2.4 SCSI subsystem HOWTO (0) | 2009.07.02 |
[Linux] LVM 커맨드 pvs/vgs/lvs (0) | 2009.06.24 |
For multiple tapes just add the -M option.
Typical use:
tar -clpMzvf /dev/st0 /anydir <— to backup to tape
tar -dlpMzvf /dev/st0 /anydir <— to compare
tar -xlpMzvf /dev/st0 /anydir <— to restore
You can’t use -M (multiple tapes) with -z option (compression).
$ tar -clpMzvf /dev/st0 /anydir
tar: Cannot use multi-volume compressed archives
# mount (disk name like = /dev/sdc1) /mnt/backup