![](/img/trans.png)
[英]How do I use tar using an absolute path from user input to backup a directory?
[英]How do I exclude absolute paths for tar?
我正在运行一个 PHP 脚本,它为我提供了我想要压缩的文件的绝对路径。 这是我的语法:
tar -cf tarname.tar -C /www/path/path/file1.txt /www/path/path2/path3/file2.xls
当我解压它时,它会创建文件的绝对路径。 我如何只显示/path
下的所有内容?
您错误地使用了-C
开关,该开关用于更改目录。 所以你需要做的是:
tar -cf tarname.tar -C /www/path path/file1.txt path2/path3/file2.xls
或者,如果您想将所有内容打包在/www/path
请执行以下操作:
tar -cf tarname.tar -C /www/path .
您可以多次使用-C
开关。
如果要删除文件名的前 n 个前导组件,则需要strip-components
。 所以在你的情况下,在提取时,做
tar xvf tarname.tar --strip-components=2
手册页列出了tar
的许多选项,包括这个选项。 一些早期版本的tar
使用--strip-path
来代替此操作。
对我来说,以下方法效果最好:
tar xvf some.tar --transform 's?.*/??g'
--transform
参数是 sed 的替代正则表达式,每个提取的文件路径都被提供给它。 与--strip-components
不同,它将删除所有路径信息,而不仅仅是固定数量的组件。
如果你不知道路径中有多少个组件,你可以试试这个:
DIR_TO_PACK=/www/path/
cd $DIR_TO_PACK/..
tar -cf tarname.tar $(basename $DIR_TO_PACK)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.