Linux 磁带备份使用 mt 和 tar 命令操作方法
磁带是一种非易失性存储介质,由薄塑料条上的磁性涂层组成。几乎所有录音带都是这种类型,无论是用于视频、音频存储还是使用计算机的通用数字数据存储。如何在 Linux 操作系统下使用磁带进行备份?
Linux(和其他 Unixish 系统)使用 mt 命令来控制磁带驱动器操作。使用磁带驱动器时需要使用 mt 命令。它允许您读取和写入磁带。
Linux 下的默认磁带驱动器是 /dev/st0(第一个 SCSI 磁带设备名称)。您可以在此处阅读有关 Linux 下使用的磁带驱动器命名约定的更多信息。以下段落总结了您需要使用控制磁带驱动器进行备份/恢复的命令。
倒带磁带驱动器:# mt -f /dev/st0 rewind
使用 tar 命令(z - 压缩)备份目录 /www 和 /home:使用# tar -czf /dev/st0 /www /home
mt 命令找出您所在的块:# mt -f /dev/st0 tell
显示磁带驱动器上的文件列表:# tar -tzf /dev/st0
恢复 /www 目录:卸载磁带:显示有关磁带单元的状态信息:擦除磁带:您可以使用 mt 命令本身在磁带上后退或前进:
(a)转到数据末尾:(b)转到上一条记录:(c)前进记录:用您的实际磁带驱动器名称替换 /dev/st0。# cd /
# mt -f /dev/st0 rewind
# tar -xzf /dev/st0 www# mt -f /dev/st0 offline
# mt -f /dev/st0 status
# mt -f /dev/st0 erase
# mt -f /dev/nst0 eod
# mt -f /dev/nst0 bsfm 1
# mt -f /dev/nst0 fsf 1
Linux 磁带备份示例
要备份到多个磁带,请使用以下命令(备份 /home 文件系统):
# tar -clpMzvf /dev/st0 /home
要比较磁带备份,请输入:
# tar -dlpMzvf /dev/st0 /home
要在数据丢失或硬盘故障的情况下恢复磁带:
# tar -xlpMzvf /dev/st0 /home
其中,
- d:查找档案和文件系统之间的差异
- x:从档案中提取文件
- l:列出档案的内容
- p:提取文件时忽略 umask
- M:创建/列出/提取多卷档案(多盘磁带)
- z:使用 gzip 压缩备份
- v:详细列出已处理的文件
- f /dev/st0:磁带设备名称
- /home:备份 /home 文件系统
让一切变得更加艰难
#!/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@example.com> # This script is licensed under GNU GPL version 2.0 or above # ------------------------------------------------------------------------- # This script is part of example shell script collection (NSSC) # Visit http://bash.example.com/ 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
根据您的需要定制上述 shell 脚本并设置一个cron 作业来执行它:
@midnight /path/to/tapebackup.sh
参见:
- 操作方法 – 通过网络 ssh 会话使用 tar 命令(即在远程 Linux 服务器系统上写入磁带)
- 下载:Linux / UNIX Tar 完整和增量磁带备份 Shell 脚本
- 这个小指南涵盖了日常生活中使用的所有选项;但是,强烈建议您阅读 mt 和 tar 命令的手册页以获取更多选项/信息。