原单词 tar命令最初的设计目的是将文件备份到磁带上(tape archive),因而得名tar
实物长这样
tar 命令是linux系统中常用的 压缩文件 和 解压缩文件命令
tar 命令的参数 异常之多,咱们只学习满足 压缩文件 和 解压缩文件 命令的参数就可以了
<mark style="box-sizing: border-boxbackground-color: rgb(255, 255, 0)color: rgb(0, 0, 0)">工作中应用于安装软件,搭建应用,部署环境</mark>
举例: 将root目录下的 adir目录和a.txt文件 压缩为 test.tar.gz
注意是大写C
如果 不使用-C参数 则默认解压至当前工作目录
举例: 将 test.tar.gz 压缩文件解压到/root目录
-c 建立新的备份文件。
-x 从备份文件中还原文件。
-v 显示指令执行过程。
-f 指定备份文件。
-z 通过gzip指令处理备份文件。(如果解压文件后缀是.tar,没有.gz则不需要使用-z参数)
-C 指定解压到的目录
使用xshell连接linux
在root 目录下 新建 tarTest目录
进入tarTest目录
压缩 /root/lnTest文件夹 和 /root/Centos-7.repo 文件 到 /root/tarTest目录下,压缩文件名为 test.tar.gz
进入/root/tarTest目录
解压test.tar.gz到当前目录(/root/tarTest)
解压test.tar.gz到/root/rmTest目录
为什么备份?
一个备份计划对定期备份文件来说很有必要,如果你宁愿选择不备份,那么丢失重要数据的风险会大大增加。有了备份,你就有了从磁盘故障中恢复的能力。备份还可以帮助你抵御:意外的文件删除/文件或文件系统损坏/服务器完全毁坏,包括由于火灾或其他问题导致的同盘备份毁坏、硬盘或 SSD 崩溃、病毒或勒索软件破坏或删除文件、你可以使用磁带归档备份整个服务器并将其离线存储。
理解磁带文件标记和块大小
每个磁带设备能存储多个备份文件。磁带备份文件通过 cpio,tar,dd 等命令创建。同时,磁带设备可以由多种程序打开、写入数据、及关闭。你可以存储若干备份(磁带文件)到一个物理磁带上。在每个磁带文件之间有个“磁带文件标记”。这用来指示一个物理磁带上磁带文件的结尾以及另一个文件的开始。你需要使用 mt 命令来定位磁带(快进,倒带和标记)。
磁带上的数据是如何存储的
所有的数据使用 tar 以连续磁带存储格式连续地存储。第一个磁带归档会从磁带的物理开始端开始存储(tar #0)。接下来的就是 tar #1,以此类推。
Unix 上的磁带设备名
/dev/rmt/0 或 /dev/rmt/1 或 /dev/rmt/[0-127] :Unix 上的常规磁带设备名。磁带自动倒回。
/dev/rmt/0n :以无倒回为特征,换言之,磁带使用之后,停留在当前状态等待下个命令。
/dev/rmt/0b :使用磁带接口,也就是 BSD 的行为。各种类型的 *** 作系统比如 AIX,Windows,Linux,FreeBSD 等的行为更有可读性。
/dev/rmt/0l :设置密度为低。
/dev/rmt/0m :设置密度为中。
/dev/rmt/0u :设置密度为高。
/dev/rmt/0c :设置密度为压缩。
/dev/st[0-9] :Linux 特定 SCSI 磁带设备名。
/dev/sa[0-9] :FreeBSD 特定 SCSI 磁带设备名。
/dev/esa0 :FreeBSD 特定 SCSI 磁带设备名,在关闭时d出(如果可以的话)。
磁带设备名示例
/dev/rmt/1cn 指明正在使用 unity 1,压缩密度,无倒回。
/dev/rmt/0hb 指明正在使用 unity 0,高密度,BSD 行为。
Linux 上的自动倒回 SCSI 磁带设备名:/dev/st0
Linux 上的无倒回 SCSI 磁带设备名:/dev/nst0
FreeBSD 上的自动倒回 SCSI 磁带设备名:/dev/sa0
FreeBSD 上的无倒回 SCSI 磁带设备名:/dev/nsa0
如何列出已安装的 scsi 磁带设备?
输入下列命令:
### Linux(更多信息参阅 man) ###
lsscsi
lsscsi -g
### IBM AIX ###
lsdev -Cc tape
lsdev -Cc adsm
lscfg -vl rmt*
### Solaris Unix ###
cfgadm –a
cfgadm -al
luxadm probe
iostat -En
### HP-UX Unix ###
ioscan Cf
ioscan -funC tape
ioscan -fnC tape
ioscan -kfC tape
mt 命令示例
在 Linux 和类 Unix 系统上,mt 命令用来控制磁带驱动器的 *** 作,比如查看状态或查找磁带上的文件或写入磁带控制标记。下列大多数命令需要作为 root 用户执行。语法如下:
mt -f /tape/device/name operation
设置环境
你可以设置 TAPE shell 变量。这是磁带驱动器的路径名。在 FreeBSD 上默认的(如果变量没有设置,而不是 null)是 /dev/nsa0。可以通过 mt 命令的 -f 参数传递变量覆盖它,就像下面解释的那样。
### 添加到你的 shell 配置文件 ###
TAPE=/dev/st1 #Linux
TAPE=/dev/rmt/2 #Unix
TAPE=/dev/nsa3 #FreeBSD
export TAPE
1:显示磁带/驱动器状态
mt status ### Use default
mt -f /dev/rmt/0 status ### Unix
mt -f /dev/st0 status ### Linux
mt -f /dev/nsa0 status ### FreeBSD
mt -f /dev/rmt/1 status ### Unix unity 1 也就是 tape device no. 1
你可以像下面一样使用 shell 循环语句遍历一个系统并定位其所有的磁带驱动器:
for d in 0 1 2 3 4 5
do
mt -f "/dev/rmt/${d}" status
done
2:倒带
mt rew
mt rewind
mt -f /dev/mt/0 rewind
mt -f /dev/st0 rewind
3:d出磁带
mt off
mt offline
mt eject
mt -f /dev/mt/0 off
mt -f /dev/st0 eject
4:擦除磁带(倒带,在支持的情况下卸载磁带)
mt erase
mt -f /dev/st0 erase #Linux
mt -f /dev/rmt/0 erase #Unix
5:张紧磁带盒
如果磁带在读取时发生错误,你重新张紧磁带,清洁磁带驱动器,像下面这样再试一次:
mt retension
mt -f /dev/rmt/1 retension #Unix
mt -f /dev/st0 retension #Linux
6:在磁带当前位置写入 EOF 标记
mt eof
mt weof
mt -f /dev/st0 eof
7:将磁带前进指定的文件标记数目,即跳过指定个 EOF 标记
磁带定位在下一个文件的第一个块,即磁带会定位在下一区域的第一个块(见图01):
mt fsf
mt -f /dev/rmt/0 fsf
mt -f /dev/rmt/1 fsf 1 #go 1 forward file/tape (see fig.01)
8:将磁带后退指定的文件标记数目,即倒带指定个 EOF 标记
磁带定位在下一个文件的第一个块,即磁带会定位在 EOF 标记之后(见图01):
mt bsf
mt -f /dev/rmt/1 bsf
mt -f /dev/rmt/1 bsf 1 #go 1 backward file/tape (see fig.01)
这里是磁带定位命令列表:
fsf 前进指定的文件标记数目。磁带定位在下一个文件的第一块。
fsfm 前进指定的文件标记数目。磁带定位在前一文件的最后一块。
bsf 后退指定的文件标记数目。磁带定位在前一文件的最后一块。
bsfm 后退指定的文件标记数目。磁带定位在下一个文件的第一块。
asf 磁带定位在指定文件标记数目的开始位置。定位通过先倒带,再前进指定的文件标记数目来实现。
fsr 前进指定的记录数。
bsr 后退指定的记录数。
fss (SCSI tapes)前进指定的 setmarks。
bss (SCSI tapes)后退指定的 setmarks。
基本备份命令
让我们来看看备份和恢复命令。
9:备份目录(tar 格式)
tar cvf /dev/rmt/0n /etc
tar cvf /dev/st0 /etc
10:恢复目录(tar 格式)
tar xvf /dev/rmt/0n -C /path/to/restore
tar xvf /dev/st0 -C /tmp
11:列出或检查磁带内容(tar 格式)
mt -f /dev/st0 rewinddd if=/dev/st0 of=-
### tar 格式 ###
tar tvf {DEVICE} {Directory-FileName}
tar tvf /dev/st0
tar tvf /dev/st0 desktop
tar tvf /dev/rmt/0 foo >list.txt
12:使用 dump 或 ufsdump 备份分区
### Unix 备份 c0t0d0s2 分区 ###
ufsdump 0uf /dev/rmt/0 /dev/rdsk/c0t0d0s2
### Linux 备份 /home 分区 ###
dump 0uf /dev/nst0 /dev/sda5
dump 0uf /dev/nst0 /home
### FreeBSD 备份 /usr 分区 ###
dump -0aL -b64 -f /dev/nsa0 /usr
13:使用 ufsrestore 或 restore 恢复分区
### Unix ###
ufsrestore xf /dev/rmt/0
### Unix 交互式恢复 ###
ufsrestore if /dev/rmt/0
### Linux ###
restore rf /dev/nst0
### 从磁带媒介上的第6个备份交互式恢复 ###
restore isf 6 /dev/nst0
### FreeBSD 恢复 ufsdump 格式 ###
restore -i -f /dev/nsa0
14:从磁带开头开始写入(见图02)
### 这会覆盖磁带上的所有数据 ###
mt -f /dev/st1 rewind
### 备份 home ###
tar cvf /dev/st1 /home
### 离线并卸载磁带 ###
mt -f /dev/st0 offline
从磁带开头开始恢复:
mt -f /dev/st0 rewind
tar xvf /dev/st0
mt -f /dev/st0 offline
15:从最后一个 tar 后开始写入(见图02)
### 这会保留之前写入的数据 ###
mt -f /dev/st1 eom
### 备份 home ###
tar cvf /dev/st1 /home
### 卸载 ###
mt -f /dev/st0 offline
16:从 tar number 2 后开始写入(见图02)
### 在 tar number 2 之后写入(应该是 2+1)###
mt -f /dev/st0 asf 3
tar cvf /dev/st0 /usr
### asf 等效于 fsf ###
mt -f /dev/sf0 rewind
mt -f /dev/st0 fsf 2
从 tar number 2 恢复 tar:
mt -f /dev/st0 asf 3
tar xvf /dev/st0
mt -f /dev/st0 offline
关于第三方备份工具
Linux 和类Unix系统都提供了许多第三方工具,可以用来安排备份,包括磁带备份在内,如:
Amanda
Bacula
rsync
duplicity
rsnapshot
tar tar是tape archive(磁带归档)的缩写,用来创建和提取档案文件。该命令是linux中很重要的命令,提供了存档的功能。我们可以使用该命令来压缩或解压缩归档文件,也可以来维护和修改这些文件。
归档文件是一个或多个文件连同自身的元信息的组合。归档文件用来收集多个的数据文件放到一起成为一个文件,方便移动和存储。 或简单的压缩减少存储空间。
结果
结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)