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 打包不帶目錄的文件