我想备份主目录,包括通常的点文件数组,但我不希望目录本身或其权限被备份甚至提及。所以,如果我有一个像
homedir
.dotfile
somesubdir
subfile
outerfile
我想要一个看起来像这样的焦油:
.dotfile
somesubdir
subfile
outerfile
请注意没有任何对 homedir 的引用,甚至没有 ./ 可见。
我实际上有一个解决方案(发布在下面),但是当我试图将它附加到让我想到它的问题上时,一些主持人说它需要自己的问题。所以就到这里了,我希望它有用。
假设您位于以下目录的父目录中
homedir
:这将使
tar
视为.
相对于homedir
。该-C
选项基本上就像cd
进入给定目录一样。文件和目录将使用./
路径前缀存储在存档中。要摆脱
./
路径前缀,使用 BSDtar
,或者,使用 GNU
tar
,使用 Bash 4.4.19 和 GNU tar 1.29,以下工作。'dotglob' 使 * 识别点和字母,而 'GLOBIGNORE' 设置为忽略“.” 和 ”..”。花括号允许我将输出定向到当前目录,而 pushd 和 popd 使 tar 发生在东西所在的位置。我不使用 tar 的 -C 选项,因为这会弄乱“*”全局。
请注意,输出文件设置为“-”,这意味着标准输出最终会转到文件 inner.tar。到 /dev/null 的重定向使提及目录更改时保持沉默。