tar命令
tar 必须指定-Acdtrux中的一个,但是cxt三个参数不能重复出现
tar命令支持归档最大8GB的文件,tar不保留任何稀疏分配的文件的稀疏属性,任何在恢复前是稀疏的文件,将按文件大小在文件系统内分配其所有空间。
Main operation mode:
tar -A,--catenate,--concatenate
将一存档与已有存档合并
tar -c,--create
创建新的存档,并将由一个或者多个FILE参数所指定的文件写入归档的开头
tar -d,--diff,--compare
比较存档与当前文件的不同之处
--delete
从存档中删除
为块文件,特殊字符文件以及先进先出(FIFO)管道进程创建单独条目,通常,TAR命令不会归档这些特殊文件,当使用-d标志写入归档时,TAR命令使归档可以用-x标志恢复空目录,特殊文件以及FIFO管道进程。
tar -r,--append
附加到存档结尾
tar -t,--list
列出存档中文件的目录
tar -u,--update
仅将较新的文件附加到存档中
tar -x,--extract,--get
从存档展开文件
其他参数:
tar --atime-preserve
不改变存储文件的存取时间
tar –checkpoint
读取存档时显示目录名
tar -g,--listed-incremental=FILE
建立新GNU格式的备份
tar -G,--incremental
--ignore-failed-read
建立老GNU格式的备份
tar -k,--keep-old-files
保存现有文件
--keep-newer-files
--no-overwrite-dir
从存档中展开时不进行覆盖
tar -n,--seek
--occurrence[=NUMBER]
--overwrite
tar -O,--to-stdout
将文件展开到标准输出
--recursive-unlink
--remove-files
tar -S,--sparse
高效处理
tar -U,--unlink-first
tar -W,--verify
写入存档后进行校验
tar -m,--touch
--no-same-owner
--no-same-permissions
--numeric-owner
--owner=NAME
--modification-time
当从一个档案中恢复文件时,不使用新的时间标签
tar -p,--preserve-permissions,--same-permissions
展开所有保护信息
--preserve
like -p -s
--same-owner
展开后所有文件属于同一所有者
使用源文件的原来属性
tar -s,--preserve-order,--same-order
tar -f,--file=ARCHIVE
指定存档或者设备(默认为/dev/rmt0)
--force-local
强制使用本地存档,即使存在克隆
使用Archive变量表示要读或者写的归档,当未指定这个标志,TAR使用一个针对特定系统的缺省文件名(格式为/dev/rmt0),如果指定的Archive变量是-(减号),TAR命令写入标准输出或者从标准输入中读取,如果写入标准输出,必须使用-c标志
tar -F,--info-script=NAME,--new-volume-script=NAME
在每个磁盘结尾使用脚本F(隐含-M),在归档前检查文件类型,源代码控制系统(SCCS),修订控制系统(RCS),名为core,errs和a.out的文件,以及以.o结束的文件不归档。
tar -l,--one-file-system
在本地文件系统中创建存档
tar -L,--tape-length=NUMBER
tar -L,--tape-length N
在写入N*1024个字节后暂停,等待更换磁盘
tar -M,--multi-volume
建立多卷存档,以便在几个磁盘中存放
--rmt-command=COMMAND
--rsh-command=COMMAND
--volno-file=FILE
tar -b,--blocking-factor=BLOCKS
tar -b,--block-size N
指定块大小为N*512字节(默认N=20)
tar -B,--read-full-records
读取时重组块
tar -i,--ignore-zeros
忽略存档中的零字节块(通常意味着文件结束)
--record-size=NUMBER
在不可读文件中作0标记后再退出
tar -H,--format=FORMAT
format是下列中的一个:
gnu
oldgnu
pax
posix
ustar
v7
tar -j,--bzip2
--old-archive,--portability
--pax-option=keyword[[:]=value][,keywork[[:]=value],...]
--postix
--use-compress-program=PROG
用PROG对存档压缩或者解压(PROG需能接受-d参数)
--block-compress
为便于磁盘存储,按照块记录存档
-[0-7][lmh]
指定驱动器和密度[高中低]
tar -y,--bzip2,--bunzip2
用bzip2对存档进行压缩或者解压
tar -V,--label=TEXT
为存档指定卷标
tar -z,--gzip,--gunzip,--ungzip
用gzip对存档进行压缩或者解压
tar -Z,--compress,--uncompress
用compress对存档压缩或者解压
tar -C,--directory=DIR
转到指定的目录
--exclude=PATTERN
不把指定文件包含在内
--exclude-caches
tar -h,--dereference
不转储动态链接,转储动态链接指向的文件
--ignore-case
tar -K,--starting-file=MEMBER-NAME
从存档文件MEMBER-NAME开始
--newer-mtime=DATE
--no-anchored
--no-ignore-case
--no-recursion
--no-wildcards
--no-wildcards-match-slash
--null
读取空结束的文件名,使-C失效
tar -N,--newer=DATE-OR-FILE
--one-file-system
仅存储时间较新的文件,比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中
tar -P,--absolute-names
--recursion
--strip-components=NUMBE
--suffix=STRING
不要从文件名中除去/符号
可以使用绝对路径来压缩
tar -T,--files-from=FILE-0F-NAMES
从文件中得到要展开或者要创建的文件名
--wildcards
--wildcards-match-slash
tar -X,--exclude-from=FILE
从指定文件中读入不想包含的文件的列表,打包时不要将file打包
tar -v,--verbose
详细显示处理的文件
tar -R,--block-number
--show-defaults
--show-omitted-dirs
--totals
显示用--create参数写入的总字节数
--utc
--record-number
显示信息时同时显示存档中的记录数
--remove-files
建立存档后删除源文件
tar -w,--interactive,--confirmation
每个从哦阿作都要求确认
tar -o,--old-archive,--portability
以V7格式存档,不用ANSI格式
tar -?,--help
--license
--usage
--version
显示TAR程序的版本号
打包:tar -cf one.tar one
解包:tar -xf one.tar one
将一些新文件附加到一个TAR包中:tar -rf one.tar two
更新原来TAR包中的同名文件:tar -uf one.tar logo.gif
压缩目录:tar czxf one.tar.gz /home
解压缩:tar xzvf one.tar.gz
压缩文件:zip one.zip one1 one2
解压缩:unzip one.zip
压缩:tar -jcvf /tmp/one.tar.bz2 /etc
解压缩: tar -jxvf /tmp/one.tar.bz2
压缩:tar -cZf one.tar.Z one
解压缩:tar -xZf one.tar.Z
解压:gzip -d one.gz
gunzip one.gz
tar -xzf one.tar.gz
tar -xzf one.tgz
bzip2 -d one.bz2
bunzip2 one.bz2
uncompress one.Z
zip one.zip one 将one 压缩成zip包
unzip one.zip
关于.rar文件。需要先安装rar forlinux,网上下载,
tar -xzpvf rarlinux-3.2.0.tar.gz
cd rar
make
然后其中的rar是压缩程序,unrar是解压程序
rar a one *.jpg 这是将所有文件压缩为one.rar,扩展名自动附加到one后
unrar e one.rar解压缩
关于磁带机的TAR命令:
使用TAR命令复制文件或者目录树到单个磁带。(不能复制空白目录或者设备文件这样的特殊文件,不能用来创建多个磁带卷。
1 复制文件到磁带
进入包含需要复制文件的目录,在磁带启动器中插入可以写入的磁带,
tar cvf /dev/rmt/0 filename filename …
此时,从磁带的当前位置写入文件,且每运行一次就会在磁带生成一个实际的磁带文件。且每个磁带文件中间有个空白磁带文件,(实际就是每个磁带空白文件之间有两个eof标志)
指定的文件复制到磁带,覆盖磁带上任何已经存在的文件。这里c将复制文件到磁带并破坏磁带上的原有文件,如果要保留这些文件,使用r选项./dev/rmt/0对应UNIX系统上的磁带机的设备名,linux系统下一般是/dev/st0或者/dev/nst0.
2 列出磁带上的文件
插入磁带到磁带驱动器
tar tvf /dev/rmt/0
3 添加文件到磁带
进入到包含有需要复制文件的目录,在磁带驱动器中插入可以写入的磁带
tar rvf /dev/rmt/0 filename filename …
指定的文件就会添加到磁带上原有文件的后面。(如果使用n选项作为磁带设备名称的一部分,可以自制多个TAR文件集到磁带,输入tarcvf /dev/rmt/0nfilename 当文件自制完毕时不回绕,文件在当前文件集的结尾写入。
4 从磁带获取文件
进入需要复制文件的目录,插入磁带,tar xvf /dev/rmt/0 或者mt rewind;tar xvf /dev/st0指定驱动器上的所有文件复制到当前目录中。从磁带中获取单个文件,
tar xvf /dev/rmt/n filename filename …
或者
tar xvf /dev/st0 filename
5 从磁带上递归读取目录和子目录
更换目录到要自制文件的父目录,tar xvf /dev/rmt/0 filename 将恢复filename到当前目录。
tar xvf /dev/rmt/0 directory_name ,从磁带中递归复制该目录和它的所有子目录。
6 注意
用/dev/nst0作为设备名时,执行tar rvf /dev/nst0 file语句进行文件的追加时,它会追加到磁带当前位置的磁带文件的后面,它会自动覆盖它后面的其他磁带文件,所以。追加前,一定要正确定位磁带的位置,一般只需追加到最后一个磁带文件的后面,可以如下实现
mt eod;mt bsfm 2;tar rvf /dev/nst0 file
用/dev/st0作为设备名称时,运行mt -f /dev/st0 rewind;tar rvf devst0 file
语句进行追加,它会追加到第一个磁带文件的后面,重复运行该命令后,它会连续追加到第一个磁带文件的后面,从而它会将整盘磁带当成一个磁带文件。
这样的操作不会有覆盖已有数据文件的危险。
tar -cvpf /dev/nst0 --label="Backup set created on `date'+%d-%B-%Y'`." --directory / --exclude=var/spool/ etc homeusr/local var/spool
在上面一行的选项,注意没有用到 ``z'' (压缩)选项。我强烈建议反对写入压缩资料到磁带上,因为如果磁带上资料有一部份损坏,您会失去整个备份 ! 然而,未压缩的储存的 archive档具有很高的可恢复性,即使磁带上的档案有一部份损毁。
因为磁带机是一个字元设备,没有办法指定一个确实的档名。因此,指定给 tar的档名可简化为装置名称,``/dev/nst0'',是在 SCSI 排汇上的第一个磁带设备。
注意: ``/dev/nst0'' 设备在备份做好後不会回带 ;因此有可能将好几组备份写到同一磁带。(您也可以选择``/dev/st0''这个装置,在这种情形磁带在备份完後会自动回带)
既然我们无法对一套备份指定档名, ``--label'' 选项可以来写进档案本身一些有关这一套备份的资讯。
最後,只有包含在 ``/etc/'', ``/home/'', ``/usr/local'', 及``/var/spool/'' (除了 Squid 的 快取资料档)会写进磁带。
当使用磁带时,可以使用下列命令回带,以及退出磁带:
mt -f /dev/nst0 rewind
mt -f /dev/nst0 offline
Tar命令备份整个linux系统
1、备份过程
一般linux典型的系统分区为:一个根(/)分区、一个boot分区和一个swap分区。我们就以此为例来介绍如何用tar来备份系统。
要备份数据,我们还需要有一个存储介质来存放我们备份的数据。备份介质有很多种,比如磁带、硬盘、光盘等。我这里用的是移动硬盘(空间足够大)。首先将移动硬盘挂载到系统上:
#mkdir /Bak
#mount /dev/sda1/Bak#假设我的移动硬盘在系统里识别为sda1
然后分别备份根分区和boot分区,swap分区不需要备份。
#tar zcvf /Bak/root-bak.tgz / --exclude proc --exclude dev--exclude sys --exclude Bak
proc和dev目录是系统自动动态创建的,所以无须备份;Bak是我们的移动硬盘所挂载的目录,当然也不需要备份了。
#cd /boot
#tar zcvf /Bak/boot-bak.tgz *
如果没有报错,那么我们的备份就算完成了。
2、还原过程
首先,用第一张系统安装光盘启动。前面的过程跟安装系统一样,在系统分区那步停下,按CTRL+F2(或CTRL+ALT+F2)得到shell。先将已有的系统分区格式化:
sh#mkfs.ext3/dev/hda1(假设原来的系统上hda1为/boot分区)
sh#mkfs.ext3/dev/hda2(假设原来的系统上hda2为/分区)
sh#mkswap/dev/hda3(假设原来的系统上hda3为swap分区)
sh#e2lable /dev/hda1/boot
sh#e2lable /dev/hda2 /
然后,挂在新的文件系统并还原操作系统。
sh#mkdir newsystem
sh#mount /dev/hda2 newsystem
sh#cd newsystem
sh#mkdir bak
sh#mount /dev/sda1bak(在用光盘启动前,就要把移动硬盘插上。不然,有可能系统无法识别移动硬盘)
sh#tar zxvf bak/root-bak.tgz
sh#mkdir boot
sh#mount /dev/hda1 boot
sh#cd boot
sh#tar zxvf ../bak/boot-bak.tgz
sh#cd ..
sh#chroot .
sh#/usr/grub-install --recheck /dev/hda
重起机器,系统成功启动,说明还原成功。