linux环境文件或者文件夹打包

Posted wd520521

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux环境文件或者文件夹打包相关的知识,希望对你有一定的参考价值。

1、linux zip压缩

压缩当前文件夹下所有文件,压缩为a.zip。命令行的方法是怎样。

常用格式:
zip -r fileName.zip 文件夹名

 (1)把/home目录下面的data目录压缩为data.zip

zip -r data.zip data #压缩data目录

 (2)把/home目录下面的data.zip解压到databak目录里面

unzip data.zip -d databak

(3) 覆盖源路径解压

unzip -o healthcode-catch.zip -d disaster-recovery

(4)把/home目录下面的a文件夹和3.txt压缩成为a123.zip

zip -r a123.zip a 3.txt

(5)把/home目录下面的t.zip直接解压到/home目录里面

unzip t.zip

(6)把/home目录下面的a1.zip、a2.zip、a3.zip同时解压到/home目录里面

unzip a*.zip

(7)把/home目录下面w.zip里面的所有文件解压到第一级目录

unzip -j wt.zip

2、linux tar压缩

(1)tar命令格式:

下面五个参数是独立的,压缩解压都要用到其中一个,可以和下面的命令连用但只能用其中一个。
-c: 建立压缩档案(创建一个新的tar文件)
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

下面的参数是根据需要在压缩或解压档案时可选的。
-z:使用gzip压缩它
-j:有bz2属性的
-Z:有compress属性的
-v:详细,显示要压缩或解压缩的文件
-O:将文件解开到标准输出

-p :使用原文件的原来属性(属性不会依据使用者而变)

参数-f是必须的。
-f: 以提供的文件名作为参数创建tar文件

(2)tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。

常用格式:

单个文件压缩打包 tar czvf my.tar file1

多个文件压缩打包 tar czvf my.tar file1 file2,…

单个目录压缩打包 tar czvf my.tar dir1

多个目录压缩打包 tar czvf my.tar dir1 dir2

解包至当前目录:tar xzvf my.tar
压缩为*.tar
tar -cvf test.tar test.txt
*.tar解压缩
tar -xvf test.tar
压缩为*.gz
tar -zcvf test.tar.gz test.txt
*.gz解压缩
tar -zxvf test.tar.gz
压缩为*.bz2
tar -jcvf test.tar.bz2 test.txt
*bz2解压缩
tar -jxvf test.tar.bz2

 3、分卷压缩

(1)使用tar分卷压缩

格式:
tar zcvf - filedir | split -d -b 500m - filename
样例:
tar zcvf - ./picture | split -d -b 500m - picture
将./picture打包,并切割为 500m 的包
输出的文件为 filename00、filename01、filename02 …
假设不加filename,则输出文件为 x00、x01、x02 …
假设不加參数 -d。则输出aa、ab、ac …

 (2)解压分卷

首先将分卷包合并
cat x* > myzip.tar.gz
然后解压
tar zxvf myzip.tar.gz

样例:
cat picture* > picture.tar.gz
tar zxvf picture.tar.gz

4、Linux脚本——把指定目录下的所有目录(文件夹)分别单独打包

(1)编写Linux shell 脚本完整代码如下 ——yasuo.sh

#!/bin/bash

function zipFile()
  echo $1
  flist=`ls $1`
  cd $1
  echo $flist
  for f in $flist
  do
    if test -d $f
    then
      #echo "dir:$f"
      zip -r $f.zip $f
    fi
  done

zipFile $1
                   

 注意:

  • 传入参数——指定目录
  • ls 获取目录下文件 到 flist
  • 遍历flist判断是否是目录,如果是目录则进行打包操作 zip -r $f.zip $f

(2)应用: 

# 修改脚本属性为 可执行
chmod 755 yasuo.sh

# 指定目录即可
./yasuo.sh 123/

 (3)效果:

tar---打包,解压缩linux的文件和目录

tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。

首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

语法

tar(选项)(参数)

选项

-A或--catenate:新增文件到以存在的备份文件;
-B:设置区块大小;
-c或--create:建立新的备份文件;
-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-d:记录文件的差别;
-x或--extract或--get:从备份文件中还原文件;
-t或--list:列出备份文件的内容;
-z或--gzip或--ungzip:通过gzip指令处理备份文件;
-Z或--compress或--uncompress:通过compress指令处理备份文件;
-f<备份文件>或--file=<备份文件>:指定备份文件;
-v或--verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-p或--same-permissions:用原来的文件权限还原文件;
-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
-N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;
--exclude=<范本样式>:排除符合范本样式的文件。

参数

文件或目录:指定要打包的文件或目录列表。

实例

将文件全部打包成tar包

tar -cvf log.tar log2012.log    仅打包,不压缩! 
tar -zcvf log.tar.gz log2012.log   打包后,以 gzip 压缩 
tar -jcvf log.tar.bz2 log2012.log  打包后,以 bzip2 压缩 

在选项f之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加z选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;如果加j选项,则以.tar.bz2来作为tar包名。

查阅上述tar包内有哪些文件

tar -ztvf log.tar.gz

由于我们使用 gzip 压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上z这个选项了。

将tar包解压缩

tar -zxvf /opt/soft/test/log.tar.gz

在预设的情况下,我们可以将压缩档在任何地方解开的

只将tar内的部分文件解压出来

tar -zxvf /opt/soft/test/log30.tar.gz log2013.log

我可以透过tar -ztvf来查阅 tar 包内的文件名称,如果单只要一个文件,就可以透过这个方式来解压部分文件!

文件备份下来,并且保存其权限

tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log

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

在文件夹当中,比某个日期新的文件才备份

tar -N "2012/11/13" -zcvf log17.tar.gz test

备份文件夹内容是排除部分文件:

tar --exclude scf/service -zcvf scf.tar.gz scf/*

 

以上是关于linux环境文件或者文件夹打包的主要内容,如果未能解决你的问题,请参考以下文章

linux运维打包文件及文本三剑客之sed使用方法

将Python程序打包成linux可执行文件

linux 运维必备150个命令

linux 运维必备150个命令

在Linux下对文件或者目录进行打包压缩

yml文件中引用系统环境变量