学习的内容来自于Linux Shell脚本攻略(2)
内容只做了简单的记录,方便自己学习
shell 命令查询地址:http://man.linuxde.net/
用Tar归档
tar命令可以对文件进行归档。他最初时设计用来将数据存储再磁带上。
tar可以将多个文件和文件夹保存为单个文件,同时还能保留所有的文本属性,如所有者,权限等。由tar创建的文件通常称为Tarball
支持的一些参数
A 合并归档文件
c 或者--create 建立新的备份文件
d 记录文件的差别
r 添加文件到已经归档的文件
u 根据时间戳判断是否添加文件
x 或者--extract或--get 从备份文件中提取文件到当前目录
C(目录) 与x搭配,在解压缩的时候指定解压缩的地址
f 或者--file 指定备份文件
v 或者--verbose 冗长模式,显示指令执行过程
t 或者--list 列出备份文件内容
--delete 删除文件
1)用tar对文件进行归档
tar -cf output.tar file1 file2 file3..
2)使用选项-t理出归档文件中包含的文件
tar -tf output.tar
3)在归档或者列出归档的时候获得更多信息。使用-v或者-vv
tar -tvf output.tar
4)解压缩文件
tar -xf output.tar
指定压缩文件中的一些文件进行解压缩(部分提取)
tar -xf output.tar file1 file2
5)合并归档文件
tar -Af file1.tar file2.tar
6)归档文件重名的问题
我们在归档的过程中放进了两个相同的文件,接下来我又使用了-rf追加进入了一个新的文件
同样是与原文件同名,这个时候我们会发现我们无法区别哪一个是新的文件哪一个是旧的文件
使用-u更新选项可以指明,只有比归档文件中的同名文件更新时才会被添加
使用-v 或者-vv查看时间戳,现在我们再往里面追加一个printf_sh.sh文件
首先我们先改变这个文件的时间戳,使用touch或者vim编辑文件
修改之前
修改之后
再把这个文件追加进去
虽然没有覆盖上面之前的文件,但是再提取文件的时候,他会自动选择最近时间戳的文件
比较归档文件与文件系统中的内容
-d diff
tar -df otput.tar
时间不一样,大小不一样。为什么会有两个不同
因为这个归档文件中一共有三个printf_sh.sh
其中有一个是我现在的文件,其他两个文件是我修改以前的文件,因此会出现两个
从归档文件中和删除文件
tar -f output.tar --delete file1 file2
或者
tar --delete --file output.tar file1
注意:tar并不是压缩文件,而是归档文件
不同的tar选项可以用来指定不同的压缩格式
-j 指定bunzip2格式
-z 指定gzip格式
--lzma指定lzma格式
tar可以通过查看输出或输入文件的扩展名来进行压缩 -a
从归档文件中排除部分文件
tar -cf output.tar * --exclude "*.txt"
样式要使用双引号来使用
使用文件列表排除
创建一个文件list
tar -cf outpu.tar * -X list
排除版本控制目录
tar --exclude-vsc -czvvf output.tar file
打印总字节数
-totals
使用gzip压缩数据
1)使用gzip压缩文件
2)解压文件
gunzip filename.gz
3)列出压缩文件的属性信息
gzip -l filename.gz
4)从stdin中读入文件,也可以将压缩文件写出stdout
5)指定级别 --fast --best
其他的压缩
跟tar 和gzip很相似还有bzip2 和zip 以及lzma pbzip