tar 打包文件--- 不包含文件所在路径的方法

我们在使用tar打包的时候,默认会把路径打进去,也就是说解包的时候是带路径的,如下:

1、在/root/下有t1.txt和t2.txt 两个文件:
[root ~]$ ll
-rw-r--r--  1 root root       3 Jun  6 12:09 t1.txt
-rw-r--r--  1 root root       3 Jun  6 12:09 t2.txt

2、将这两个文件归档:
[root ~]$ tar -cvzf t.tar /root/t1.txt /root/t2.txt 
tar: Removing leading `/' from member names
/root/t1.txt
/root/t2.txt

[root ~]$ ll
-rw-r--r--  1 root root       3 Jun  6 12:09 t1.txt
-rw-r--r--  1 root root       3 Jun  6 12:09 t2.txt
-rw-r--r--  1 root root     138 Jun  6 12:10 t.tar

3、将t.tar包拷贝到/data目录下然后解压:
[root ~] $ mv t.tar /data/

[root ~] $ cd /data/
[root data]$ tar -xvzf t.tar 
root/t1.txt
root/t2.txt

此时,我们可以看到,在/data下自动建立了root目录,然后把t1、t2两个文件放进去了

[root data]$ ll /data/root/
total 8
-rw-r--r-- 1 root root 3 Jun  6 12:09 t1.txt
-rw-r--r-- 1 root root 3 Jun  6 12:09 t2.txt

一、解决打包不包含路径问题

1、进入目录内,执行打包命令:

$ cd /root/test

$ pwd
/root/test

$ ll
-rw-r--r-- 1 root root   0 Jun  6 12:15 t1.txt
-rw-r--r-- 1 root root   0 Jun  6 12:15 t2.txt


$ tar -cvzf tt.tar *
t1.txt
t2.txt


$ ll
total 4
-rw-r--r-- 1 root root   0 Jun  6 12:15 t1.txt
-rw-r--r-- 1 root root   0 Jun  6 12:15 t2.txt
-rw-r--r-- 1 root root 121 Jun  6 12:15 tt.tar

这时,打的tt.tar就不包含路径了,把tt.tar拷贝到/data 下,然后解压:

$ mv tt.tar /data/
[root]$ cd /data/
[root]$ tar -xvzf tt.tar 
t1.txt
t2.txt

[root]$ ll
-rw-r--r--  1 root root          0 Jun  6 12:15 t1.txt
-rw-r--r--  1 root root          0 Jun  6 12:15 t2.txt

2、使用-C 参数:

也需要进入对应目录

$ cd /root/test

$ pwd
/root/test

$ ll
-rw-r--r-- 1 root root   0 Jun  6 12:15 t1.txt
-rw-r--r-- 1 root root   0 Jun  6 12:15 t2.txt


$ tar -cvf ttt.tar -C /root/test/ *
t1.txt
t2.txt


$ ll
total 12
-rw-r--r-- 1 root root     0 Jun  6 12:15 t1.txt
-rw-r--r-- 1 root root     0 Jun  6 12:15 t2.txt
-rw-r--r-- 1 root root 10240 Jun  6 12:28 ttt.tar

当然,可以直接把tar包打到指定位置:

$ pwd
/root/test

$ tar -cvf /data/ttt.tar -C /root/test/ *
t1.txt
t2.txt

二、解压tar包到指定位置:

通过上面,我们可以把文件直接打进tar包,不包含目录。当我们解压时,需要建立好对应的目录(和scp比一样,scp会自动建立),然后使用-C 指定解压的位置。(注:前提是tar打的包不包含路径)

$ cd /data
$ mkdir abc

$ pwd
/data

$ tar -C /data/abc/ -xvf ttt.tar 
t1.txt
t2.txt

$ cd abc/
$ ll
total 0
-rw-r--r-- 1 root root 0 Jun  6 12:15 t1.txt
-rw-r--r-- 1 root root 0 Jun  6 12:15 t2.txt

 

 

 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赶路人儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值