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 打包不带目录的文件