Hot For Coding
tar打包改变目录路径

full

tar是一个非常好用的Linux下打包命令,tar默认打包是全路径,也就是你在打包时指定的路径是什么样打包后是什么样,下面看看例子

假设要打包的目录是/home/nicholas/website

nicholas@nicholas-B85-D3V:~/website$ ll /home/nicholas/website
total 8
drwxrwxr-x  2 nicholas nicholas 4096 11月 25 09:07 ./
drwxr-xr-x 76 nicholas nicholas 4096 11月 25 09:06 ../
-rw-rw-r--  1 nicholas nicholas    0 11月 25 09:06 index.html
-rw-rw-r--  1 nicholas nicholas    0 11月 25 09:07 logo.png

而你现在所处的位置在/home/nicholas/tar

nicholas@nicholas-B85-D3V:~/tar$ pwd
/home/nicholas/tar

你要打包/home/nicholas/website目录的内容到当前目录下,可以这么干: tar -cvf website.tar /home/nicholas/website/

nicholas@nicholas-B85-D3V:~/tar$ tar -cvf website.tar /home/nicholas/website
tar: Removing leading `/' from member names
/home/nicholas/website/
/home/nicholas/website/index.html
/home/nicholas/website/logo.png

现在,我们解压它看看tar -xvf website.tar

nicholas@nicholas-B85-D3V:~/tar$ tar -xvf website.tar 
home/nicholas/website/
home/nicholas/website/index.html
home/nicholas/website/logo.png
nicholas@nicholas-B85-D3V:~/tar$ ls
home  website.tar
nicholas@nicholas-B85-D3V:~/tar$ tree -L 4 ./
./
├── home
│   └── nicholas
│       └── website
│           ├── index.html
│           └── logo.png
└── website.tar

3 directories, 3 files
nicholas@nicholas-B85-D3V:~/tar$ 

以上解压会发现打包时/home/nicholas/website/这一整套路径都带过来,通常我们需要在打包的时候把这些路径给去掉,避免使用这个包的人在解压的时候造成麻烦,于是我们可以使用-C参数来修改工作当前路径,tar -cvf website.tar -C /home/nicholas/website .,后面的点表示所有内容都在根目录内

nicholas@nicholas-B85-D3V:~/tar$ tar -cvf website.tar -C /home/nicholas/website .
./
./index.html
./logo.png

解压时,如果不指定目录,则会全部解压到当前目录,如:

nicholas@nicholas-B85-D3V:~/tar$ tar -xvf website.tar 
./
./index.html
./logo.png
nicholas@nicholas-B85-D3V:~/tar$ ll
total 20
drwxrwxr-x  2 nicholas nicholas  4096 11月 25 09:07 ./
drwxr-xr-x 77 nicholas nicholas  4096 11月 25 09:08 ../
-rw-rw-r--  1 nicholas nicholas     0 11月 25 09:06 index.html
-rw-rw-r--  1 nicholas nicholas     0 11月 25 09:07 logo.png
-rw-rw-r--  1 nicholas nicholas 10240 11月 25 09:18 website.tar

通常情况下,为了避免使用者直接解压时文件都会解压到当前路径下导致文件混乱,都是加一层目录,所以可以这么干: tar -cvf website.tar -C /home/nicholas ./website

nicholas@nicholas-B85-D3V:~/tar$ tar -cvf website.tar -C /home/nicholas ./website
./website/
./website/index.html
./website/logo.png

这样使用者在解压的时候,会直接解压到website目录下

nicholas@nicholas-B85-D3V:~/tar$ tar -xvf website.tar 
./website/
./website/index.html
./website/logo.png
nicholas@nicholas-B85-D3V:~/tar$ tree -L 3 ./*
./website
├── index.html
└── logo.png
./website.tar

0 directories, 2 files

website目录就是我们所有压缩的内容,无论使用者在哪里解压都比较方便,毕竟大部分用户拿到包之后都喜欢tar -xvf xxx.tar

TITLE: tar打包改变目录路径

LINK: https://www.qttc.net/501_tar_change_directory.html

NOTE: 转载内容请注明出处