tar命令打包压缩时排除.svn .git .repo等特定文件/文件夹报错/未生效
当使用tar命令打包压缩的同时期望排除某类文件或文件夹时,可以使用--exclude
参数。
在ubuntu20.04版本,执行命令tar -caf /tmp/mydocs.tar.gz * --exclude=.git
报错,如下:
$ tar -caf /tmp/mydocs.tar.gz * --exclude=.git
tar: 下列选项在归档创建或更新模式中用在任何非可选参数之后。这些选项是可选的,且仅影响跟随其后的参数。请在安排参数顺序时谨慎处理。
tar: --exclude “.git” 无效果
tar: 由于前次错误,将以上次的错误状态退出
但是在ubuntu18.04版本,执行同样命令tar -caf /tmp/mydocs.tar.gz * --exclude=.git
不会报错,但是解压mydocs.tar.gz
之后,发现.git
文件夹还在,说明--exclude=.git
未生效。
正确用法:
需要将--exclude
参数放在需要打包压缩的文件前面。正确命令如下:
$ tar --exclude=.git -caf /tmp/mydocs.tar.gz *
上述使用的比较通用的方法排除不期望打包在内的文件/文件夹。如果只是不期望包含版本控制系统的目录的话,还可以使用参数--exclude-vcs
、--exclude-vcs-ignores
。
注:vcs
是version control system
的缩写。