在创建. tar.gz 文件时排除目录

我有一个 /public_html/文件夹,在那个文件夹中有一个 /tmp/文件夹,里面有大约70gb 的文件我并不真正需要。

现在我试图创建一个 .tar.gz/public_html/不包括 /tmp/

这是我运行的命令:

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/"

Tar 仍然在被创建,通过做一个 ls -sh我可以看到 MyBackup.tar.gz已经有大约30gb 了,而且我确信没有 /tmp//public_html/不会有超过1GB 的文件。

我做错了什么?

249165 次浏览

尝试删除要排除的目录路径末尾的最后一个/

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp"

尝试将 --exclude移动到 include 之前。

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/

是的,删除后面的 /和(至少在 ubuntu11.04中)所有给定的路径必须是相对路径或完整路径。不能在同一个命令中混合使用绝对路径和相对路径。

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "home/user/start-directory/logs"

将不排除日志目录,但

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "./start-directory/logs"

会成功的

试试这个

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp

排除选项需要包含 =符号,不需要 "

--exclude=/home/user/public_html/tmp

排除压缩目录的正确命令是:

tar --exclude='./folder' --exclude='./upload/folder2' -zcvf backup.tar.gz backup/

一定要把 ——在源项目和目标项目之前排除

您可以检查 tar.gz 文件的内容而不用解压缩:

tar -tf backup.tar.gz

你也可以只使用一个 --exclude来排除多个 --exclude:

tar -pczf MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/

--exclude=中,必须在没有 /的情况下完成目录名,并且必须在 MyBackup.tar.gz/home/user/public _ html/之间

语法是:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>

在 windows 10上运行 unxutils tar 时,接受的答案对我不起作用。相反,我必须将文件/dirs 作为 最后参数存档,如下所示:

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/

那就成功了。

这对我很有效:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"

tar -pczf <target_file.tar.gz> --exclude /path/to/exclude --exclude /another/path/to/exclude/* /path/to/include/ /another/path/to/include/*

在 Ubuntu 19.10中测试。

  1. exclude后面的 =是可选的。如果你喜欢,可以用 =代替关键字 exclude后面的空格。
  2. 参数 exclude必须放在源之前。
  3. Use 文件夹名(如第一个)和 * (如第二个)的区别在于: 第二个文件夹在包中包含一个空文件夹,而第一个文件夹不包含空文件夹。