202502141432
先看一条tar命令
cd $HOME
tar -cvpaf ../home.tgz * --exclude-caches --exclude-caches-all --exclude-vcs --exclude-tag-all="skip_tar.tag"
一看以为是备份home目录,结果输出发现你想排除的目录压根没有排除,这是因为,—exclude选项要放在前面,改成这样就行了
tar --exclude-caches-all --exclude-vcs --exclude-tag-all=skip_tar.tag -cvpaf ../home.tgz *
然后这里还有一个坑,你以为*
会包含隐藏目录?不会的,试试echo *
。一般的,*
在ls命令和bash展开中不会包含隐藏文件(即以.
开头的文件),但是tar不care(find命令也不care),但这里写的*
其实是bash展开。正确写法应该是
tar --exclude-caches-all --exclude-vcs --exclude-tag-all=skip_tar.tag -cvpaf ../home.tgz .
这样tar的目标是当前目录,而tar默认会包含隐藏文件。