linux常用命令之tar

本文记录了学习tar命令的心得,包括如何在Linux中打包文件、查看文件大小、使用du命令、以及tar的压缩参数-z和-j。通过实例演示了gzip格式的压缩效果,还探讨了如何解压特定文件和目录,同时提到了路径的使用,包括绝对路径和相对路径的概念。

这两天在研究tar命令,看了很多前辈的博客。参考前辈的文章自己做实验写一下心得。
擒贼先擒王这篇文章写的很仔细。参数详情请参考链接。
只用tar命令是打包的意思,发现一个有意思的事。先写一下吧
在根目录下创建名为tar的文件夹,并创建四个文本文件。
这里多用了几个命令,是为了练习一下。
rm -rf 是删除命令,-r 是删除目录的意思, -f 是强制删除。生产环境下不要乱用!!

例一
[root@linuxprobe /]# mkdir tar
[root@linuxprobe /]# cd tar
[root@linuxprobe tar]# ls
[root@linuxprobe tar]# man help > 1.txt 		//将help命令的详细信息重定向到1.txt
[root@linuxprobe tar]# cat 1.txt > 2.txt		//将1.txt文件内容重定向到2.txt
[root@linuxprobe tar]# cp 2.txt 3.txt		//复制2.txt并重命名为3.txt
[root@linuxprobe tar]# touch 4.txt		//新建4.txt空文档
[root@linuxprobe tar]# ls
1.txt  2.txt  3.txt  4.txt

用 du 命令查看文档大小

例二
[root@linuxprobe tar]# du -sh *		//查看本目录所有文件的大小
104K	1.txt
104K	2.txt
104K	3.txt
0	4.txt

将 tar 文件夹下所有的txt文件打包(仅打包)成 all.tar

例三
[root@linuxprobe tar]# tar -cvf all.tar *.txt		//加上-v参数显示打包过程
1.txt
2.txt
3.txt
4.txt

查看打包后文件大小

例四
[root@linuxprobe tar]# du -sh all.tar		//查看指定文件的大小
312K	all.tar

重新写入内容并查看其大小

例五
[root@linuxprobe tar]# man ls > 4.txt				//将信息重定向到文件内
[root@linuxprobe tar]# tar -uf all.tar 4.txt		//用-u参数更新包内内容
[root@linuxprobe tar]# man ls >> 4.txt			//将信息追加重定向到文件
[root@linuxprobe tar]# du -sh 4.txt
20K	4.txt


不知道这是什么情况?明明已经更新文件了可是包里有好几个 4.txt 文件。

例六
[root@linuxprobe tar]# tar -uf all.tar 4.txt		//用-u参数更新包内内容
[root@linuxprobe tar]# tar -tf all.tar			//-t参数不解压的情况下查看包内文件
1.txt
2.txt
3.txt
4.txt
4.txt


包的大小也不对,可是解压出来后就只有一个 4.txt 了?这是咋回事,没弄明白。只是包内文件确实更新了!先记下,有空再仔细研究下原理。

例七
[root@linuxprobe tar]# du -sh all.tar		
768K	all.tar
[root@linuxprobe tar]# mkdir new			//新建文件夹
[root@linuxprobe tar]# tar -xf all.tar -C /tar/new	 	//	-x参数解压,-C (大写)用于指定解压文件夹
[root@linuxprobe tar]# cd new
[root@linuxprobe new]# ls
1.txt  2.txt  3.txt  4.txt
[root@linuxprobe new]# du -sh 
332K	.

增加新文件
先把原来的文件删了,再重新创建一个。查看包内内容那么别扭呢?

例八
[root@linuxprobe tar]# rm -rf all.tar
[root@linuxprobe tar]# tar -cf all.tar *.txt
[root@linuxprobe tar]# ls
1.txt  2.txt  3.txt  4.txt  all.tar  
[root@linuxprobe tar]# touch 5.txt
[root@linuxprobe tar]# tar -rf all.tar 5.txt		//-r 参数追加写入文件
[root@linuxprobe tar]# tar -tf all.tar
1.txt
2.txt
3.txt
4.txt
5.txt

以上几个参数不能叠加使用,即 tar 后必须且只能出现一个,不能同时打包、更新、追加、解压、查看。
-f 参数只能是最后一个参数,-f 参数后紧跟打包后的文件名。

压缩参数 -z -j

下面再玩玩压缩参数吧,单独使用 tar 不加 -z 或 -j 参数文件只会是打包。不会压缩
先试试 -z 参数,gzip格式打包一下看一下效果吧!

例九
[root@linuxprobe tar]# tar -czvf all.tar.gz *.txt && du -sh *
1.txt
2.txt
3.txt
4.txt
232K	1.txt
104K	2.txt
104K	3.txt
20K	4.txt
112K	all.tar.gz

效果显而易见,压缩率还是很高的

下面来玩一下解压某个文件夹内的指定文件/文件夹吧!
又学了一招,命令回传码 (与 或)
与 || 前面的命令执行失败后执行后面的命令。
或 && 是前面的命令执行成功后执行后面的命令

例十
[root@linuxprobe tar]# ls /tar/new || mkdir /tar/new && touch /tar/new/5.txt && ls
ls: cannot access /tar/new: No such file or directory
1.txt  2.txt  3.txt  4.txt  new
[root@linuxprobe tar]# tar -czvf all.tar.gz * && rm -rf new && ls
1.txt
2.txt
3.txt
4.txt
new/
new/5.txt
1.txt  2.txt  3.txt  4.txt  all.tar.gz

首先在本目录下解压
要知道路径是个什么东西

绝对路径 :从根目录开始写起的文件或目录名称
相对路径 :相对于当前路径的写法

需要注意的是命令后的路径为 相对路径,实验多次如果路径输错会报警,命令执行不成功。
看看错误的示例

例十一
[root@linuxprobe tar]# tar -xzvf all.tar.gz /tar/new/5.txt && ls
tar: /tar/new/5.txt: Not found in archive
tar: Exiting with failure status due to previous errors

以下是正确的示例

例十二
[root@linuxprobe tar]# tar -xzvf all.tar.gz new/5.txt
										//注意路径为相对路径
new/5.txt		//成功

再来玩一下在别的目录下解压到某一个指定的目标吧

例十三
[root@linuxprobe tar]# rm -rf all.tar.gz
[root@linuxprobe tar]# ll
total 268
-rw-r--r--. 1 root root  54284 May 16 16:42 1.txt
-rw-r--r--. 1 root root 103499 May  8 05:53 2.txt
-rw-r--r--. 1 root root 103499 May  8 05:53 3.txt
-rw-r--r--. 1 root root     11 May 15 17:10 4.txt
drwxr-xr-x. 2 root root     18 May 16 17:40 new
[root@linuxprobe tar]# cd /home
[root@linuxprobe home]# tar -czvf all.tar.gz /tar/* && rm -rf /tar/new
tar: Removing leading `/' from member names		//试了很多遍也没有把这个警给去掉,没找到原因
/tar/1.txt
/tar/2.txt
/tar/3.txt
/tar/4.txt
/tar/new/
/tar/new/5.txt
[root@linuxprobe home]# tar -xzvf all.tar.gz tar/new/5.txt -C /tar/ && ll /tar
//-C 参数指解压到指定目录,						这个路径是相对于 /home 目录的
tar/new/5.txt
total 268
-rw-r--r--. 1 root root  54284 May 16 16:42 1.txt
-rw-r--r--. 1 root root 103499 May  8 05:53 2.txt
-rw-r--r--. 1 root root 103499 May  8 05:53 3.txt
-rw-r--r--. 1 root root     11 May 15 17:10 4.txt


哎呀大功告成总算完工了,继续研究下一个命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值