我在新电脑上安装 Ubuntu,并从旧电脑(Ubuntu)传输文件。在我的主目录中,我想 tar 所有文件,但排除目录和“。”文件。我找不到 tar 排除来执行此操作。可以吗?
答案1
这不是您想要的,但您可以使用--strip-components
选项从文件名中排除 N 个文件夹。
例如,这将提取跳过顶层文件夹的文件
tar -xf har-tools.tar --strip-components 1
这StackOverflow 答案建议另一种方法,但您必须使用另一个命令删除文件夹。
tar xf har-tools.tar --transform='s/.*\///'
这基本上用文件名将所有前导路径条目替换为空字符串。
答案2
那么我建议您按照以下逻辑进行操作:
首先在您的主目录中找到所需的文件,然后将其 tar 到存档中。
find /path/to/home -type f -print0 | tar -cvzf backup.tar.gz --null -T -
这将有助于查找文件,普通的 find 命令会忽略所有隐藏文件。在备份文件时,可能会出现文件名中空格的常见问题,请忽略该问题- 无效的被使用,并且在 tar 函数中 -cvzf 解释为 create、verbose、compress、filename。
希望这对您有用。干杯。