zaf*_*zaf 49 grep packaging tar find xargs
我的源代码树包含几个使用Git源代码控制的目录,我需要对整个树进行tarball,不包括对Git元数据或自定义日志文件的任何引用.
我以为我会使用find/egrep/xargs/tar的组合,但不知何故tar文件包含.git目录和*.log文件.
这就是我所拥有的:
find -type f . | egrep -v '\.git|\.log' | xargs tar rvf ~/app.tar
Run Code Online (Sandbox Code Playgroud)
有人能在这里解释我的误会吗?为什么tar处理find和egrep正在过滤的文件?
我也对其他技术持开放态度.
Ole*_*nge 96
当文件数量增加到多个xargs命令时,你会得到一个令人讨厌的惊喜:然后你将首先制作第一个文件的tar文件,然后用其余的文件覆盖相同的tar文件.
GNU tar有--exclude选项可以解决这个问题:
tar cvf ~/app.tar --exclude .git --exclude "*.log" .
Run Code Online (Sandbox Code Playgroud)
Iva*_*van 51
您可以直接尝试使用tar选项--exclude-vcs:
--exclude-vcs:
Exclude version control system directories
Run Code Online (Sandbox Code Playgroud)
例如:
tar cvfj nameoffile.tar.bz2 directory/ --exclude-vcs
Run Code Online (Sandbox Code Playgroud)
它适用于Git.
jkr*_*mer 12
尝试这样的事情:
git archive --format=tar -o ~/tarball.tar -v HEAD
Run Code Online (Sandbox Code Playgroud)
将.log文件和其他您不想打包的内容添加到.gitignore文件中.