tar 打包的时候去掉目录前缀

tar 打包时去掉目录前缀

说明

例: 现有目录结构如下所示.

# tree /a
/a
└── b
    └── c
        ├── hello
        └── hello.md5sum

正常情况打包c目录下的文件

压缩
# tar cf /opt/test.tar /a/b/c/hello /a/b/c/hello.md5sum 

解压
# tar xf test.tar 
# ls
a  test.tar
# tree /opt/a/
/opt/a/
└── b
    └── c
        ├── hello
        └── hello.md5sum

如上所示,在正常情况下压缩目录下的文件默认会打包带上目录结构,一直到最后一层需要打包的文件。
那么如何实现打包时只压缩最后一层的文件,而不带上任何目录或者是不需要的几级目录呢?

实现方式

一、cp

使用cp命令,先将文件拷贝到目标路径,再进行打包。

# cp /a/b/c/* /opt/ && cd /opt && tar cf /opt/test2.tar ./hello ./hello.md5sum 

二、使用"--transform"

参数: --transform s=xxx/==

# tar cvf /trans/testfile2.tar.gz --transform s=a/b/c/== ./a/b/c/hello ./a/b/c/hello.md5sum

解释:"s=a/b/c/==" 表示省略的目录,后面就是要打包所有的文件

# tar xf testfile2.tar.gz
# ls
hello  hello.md5sum

以上就是通过--transform 打包不带目录的文件

猜你喜欢

转载自www.cnblogs.com/sihye/p/12168288.html
tar