学习啦 > 学习电脑 > 操作系统 > Linux教程 > Linux系统中打包文件的命令详解

Linux系统中打包文件的命令详解

时间: 佳洲1085 分享

Linux系统中打包文件的命令详解

  Linux系统中遇到要打包文件的时候我们该使用什么命令呢?下面由学习啦小编为大家整理了Linux系统中打包文件的命令详解的相关知识,希望对大家有帮助!

  Linux系统中打包文件的命令详解

  tar

  tar 的选项与参数非常的多!我们只讲几个常用的选项,更多选项您可以自行 man tar 查询啰!

  [root@www ~]# tar [-j|-z] [cv] [-f 建立的档名] filename... <==打包与压缩

  [root@www ~]# tar [-j|-z] [tv] [-f 建立的档名] <==察看档名

  [root@www ~]# tar [-j|-z] [xv] [-f 建立的档名] [-C 目录] <==解压缩

  选项与参数:

  -c :建立打包档案,可搭配 -v 来察看过程中被打包的档名(filename)

  -t :察看打包档案的内容含有哪些档名,重点在察看『档名』就是了;

  -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开

  特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。

  -j :透过 bzip2 的支援进行压缩/解压缩:此时档名最好为 *.tar.bz2

  -z :透过 gzip 的支援进行压缩/解压缩:此时档名最好为 *.tar.gz

  -v :在压缩/解压缩的过程中,将正在处理的档名显示出来!

  -f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项啰!

  -C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

  其他后续练习会使用到的选项介绍:

  -p(小写) :保留备份资料的塬本权限与属性,常用于备份(-c)重要的设定档

  -P(大写) :保留绝对路径,亦即允许备份资料中含有根目录存在之意;

  --exclude=FILE:在压缩的过程中,不要将 FILE 打包!

  其实最简单的使用 tar 就只要记忆底下的方式即可:

  压 缩:tar -jcv -f filename.tar.bz2 要被压缩的档案或目录名称

  查 询:tar -jtv -f filename.tar.bz2

  解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

  Linux系统中打包文件命令的详解实例

  范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

  [root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!

  [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩

  [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

  # 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。

  # 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~

  # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~

  # 上述指令在执行的时候,会显示一个警告讯息:

  # 『tar: Removing leading `/' from member names』那是关於绝对路径的特殊设定。

  范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?

  [root@linux ~]# tar -ztvf /tmp/etc.tar.gz

  # 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,

  # 就得要加上 z 这个参数了!这很重要的!

  范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

  [root@linux ~]# cd /usr/local/src

  [root@linux src]# tar -zxvf /tmp/etc.tar.gz

  # 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,

  # 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,

  # 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc

  # 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

  范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

  [root@linux ~]# cd /tmp

  [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

  # 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,

  # 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

  范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!

  [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

  # 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

  范例六:在 /home 当中,比 2005/06/01 新的文件才备份

  [root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

  范例七:我要备份 /home, /etc ,但不要 /home/dmtsai

  [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

  范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!

  [root@linux ~]# cd /tmp

  [root@linux tmp]# tar -cvf - /etc | tar -xvf -

  # 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!

  # 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~

  # 这分别代表 standard output, standard input 与管线命令啦!

  # 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰!

  补充:Linux系统中其它打包命令

  gzip, zcat 命令

  [root@linux ~]# gzip [-cdt#] 档名

  [root@linux ~]# zcat 档名.gz

  参数:

  -c :将压缩的资料输出到萤幕上,可透过资料流重导向来处理;

  -d :解压缩的参数;

  -t :可以用来检验一个压缩档的一致性~看看文件有无错误;

  -# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6 ~

  bzip2, bzcat 命令

  [root@linux ~]# bzip2 [-cdz] 档名

  [root@linux ~]# bzcat 档名.bz2

  参数:

  -c :将压缩的过程产生的资料输出到萤幕上!

  -d :解压缩的参数

  -z :压缩的参数

  -# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!

  compress 命令

  [root@linux ~]# compress [-dcr] 文件或目录

  参数:

  -d :用来解压缩的参数

  dd 命令

  [root@linux ~]# dd if="input_file" of="outptu_file" bs="block_size" \

  count="number"

  参数:

  if :就是 input file 啰~也可以是装置喔!

  of :就是 output file 喔~也可以是装置;

  bs :规划的一个 block 的大小,如果没有设定时,预设是 512 bytes

  count:多少个 bs 的意思。

  -r :可以连同目录下的文件也同时给予压缩呢!

  -c :将压缩资料输出成为 standard output (输出到萤幕)

  cpio 命令

  [root@linux ~]# cpio -covB > [file|device] <==备份

  [root@linux ~]# cpio -icduv < [file|device] <==还原

  参数:

  -o :将资料 copy 输出到文件或装置上

  -i :将资料自文件或装置 copy 出来系统当中

  -t :查看 cpio 建立的文件或装置的内容

  -c :一种较新的 portable format 方式储存

  -v :让储存的过程中文件名称可以在萤幕上显示

  -B :让预设的 Blocks 可以增加至 5120 bytes ,预设是 512 bytes !

  这样的好处是可以让大文件的储存速度加快(请参考 i-nodes 的观念)

  -d :自动建立目录!由於 cpio 的内容可能不是在同一个目录内,

  如此的话在反备份的过程会有问题! 这个时候加上 -d 的话,

  就可以自动的将需要的目录建立起来了!

  -u :自动的将较新的文件覆盖较旧的文件!

3637027