tar: Removing leading `/’ from member names的错误
用php写了个自动备份的脚本,其中打包执行tar代码如下:
tar -czf ~/down/bak/bak".date("Ymd").".tar.gz /srv/*
执行时会提示
$ tar: Removing leading `/’ from member names
查了一下原因tar压缩是带着压缩路径信息一起打包的,解压如果不使用-C参数指定解压到哪个目录,则默认解压至压缩时的目录。这样的话就会有一个神坑,如果你压缩的时候指定的是绝对路径,包含了整个路径信息。对于不知情的人如果解压你压缩的包,可能直接就覆盖了他当前目录+这个绝对路径里重要的文件。
所以tar默认是不允许使用绝对路径指定压缩内容的。如果是相对路径,则解压时一定会解压至压缩包的路径下,不可预测的风险变会小的多。tar提供了一个-P参数用于指定要使用绝对路径(解压时也要用-P),但更好的解决办法为解锁前使用-C改变当前操作目录为/,然后对相对路径srv进行压缩,修改为:
tar -czf ~/down/bak/bak".date("Ymd").".tar.gz -C / srv
发表于 2018-06-01 06:16:00 并被添加「」标签,阅读量: 698 。
此处评论已关闭