linux中的tar命令注意事项

时间:2022-10-27 12:21:58

在使用tar命令的时候,使用的是绝对路径,但是总是有个提示,提示如下:

tar:Rmoving leading '/' from the member names

使用tar文件备份打包命令时,一般不建议使用绝对路径,而最好使用相对路径,如果使用的是绝对路径,默认的情况下野会将绝对路径转化为相对路径,如果必须使用绝对路径,使用-P参数

原因解释:

tar在备份打包时,默认为相对路径;而排除匹配式默认也是全路径匹配的所以,在打包时,会提示:“tar: Removing leading `/’ from member names”除非你使用-P参数或特定的参数指定。 
它是tar命令为了避免不必要的错误而做的限制。如果用户在压缩文件时使用了绝对路径,那么tar会自动的剥离掉第一个‘/’。 

风险:可能会覆盖此目录下的所有内容,如果是绝对路径务必小心

例如,你想备份/etc的内容: 
$tar -zcf etc.tar.gz  /etc 
生成了一个压缩包,那么在解压这个压缩包的时候,内容会被写入到/etc这个目录,可能潜在的造成风险。 
经过tar剥离第一个’/’后,解压时压缩包的内容会被释放到当前目录,即:./etc。 
-P参数:extract to directory DIR 
-C参数:change to directory DIR

解决方法:使用相对路径,在bash中,使用cd进入路径,然后执行tar命令

备份不同的路径的时候使用命令 cd /home/log && tar -zcf  bak.tar.gz  log1  log2

tar命令解压报错:

gzip: stdin: decompression OK, trailing garbage ignored
tar: Child returned status 2
tar: 由于前面延迟的错误而退出


解释:

报这样的错通常是因为tar.gz文件的尾部有一串0x00或者0xff,这是由于很多场合下压缩算法都会在压缩完成后补充一些字节以对齐数据块.gzip在正确解压完tar.gz的内容后开始解压这样的全零填充字节就会报这样的错.并不会影响使用.