在一个Linux机器上,习惯性地对tar使用了-s参数,想在解压时把包里的文件改个名,但得到了错误提示,想了好一阵子,才想起来Linux用的是gunt tar,跟FreeBSD里面的tar有所区别,现在把几个大的区别记一下,防止以后再犯错误。
另,本文没有找到“所有”区别,欢迎大家一起来“找不同”。
1、FreeBSD对命令行的参数位置要求严格,在tar上比较著名的是exclude参数,在Linux下很多人喜欢把exclude放到命令的最后面,因为它可能非常长,几十个项目都有可能,但是在FreeBSD下,这种写法会直接报错或者干脆exclude无效。
2、guntar有两种模式比较好用,在FreeBSD下也没有:delete模式,可以删除tar中的文件;-d模式,可以比较tar和目录;
3、guntar压缩:
-j bzip2
-J xz
-z gzip
bsdtar压缩:
-j bzip, bzip2, bunzip2
-J xz
--lrzip
--lzma
--lzop
-Z --compress Lempel-Ziv
-z --gzip
另外,bsdtar解压时不需要指定解压参数,会自动识别压缩格式。
4、-s在两个系统中含义不同:guntar表示保持原始排序;bsdtar表示按模式替换。
5、 -H在两个系统中含义不同:
guntar表示“格式”,长格式为--format,对应于bsdtar的--format;
bsdtar表示“在命令行中的文件如果是链接,则把链接文件一起打包”。
另外-h在两个系统中含义相同,都是“所有链接文件都打包”