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

Linux 创建.tar.gz文件时排除目录,linux,gzip,tar,compression,Linux,Gzip,Tar,Compression,我有一个/public\u html/文件夹,在这个文件夹中有一个/tmp/文件夹,其中有70gb的文件我并不需要 现在我正在尝试创建一个.tar.gz的/public\u html/排除/tmp/ 这是我运行的命令: tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/" tar仍在创建中,通过执行ls-sh,我可以看到MyBackup.tar.gz已经有了大约30g

我有一个
/public\u html/
文件夹,在这个文件夹中有一个
/tmp/
文件夹,其中有70gb的文件我并不需要

现在我正在尝试创建一个
.tar.gz
/public\u 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\u html/
的文件不会超过1GB


我做错了什么?

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

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/ 

是的,删除尾随的
/
,并且(至少在ubuntu 11.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/
确保在源项和目标项之前放置--exclude

您可以在不解压缩的情况下检查tar.gz文件的内容:

tar -tf backup.tar.gz

您还可以仅使用一个
--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\u html/

语法是:

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

接受的答案对我不起作用,在windows10上运行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--exclude/path/to/exclude--exclude/other/path/to/exclude/*/path/to/include//other/path/to/include/*

在Ubuntu 19.10中测试

  • 排除
    后的
    =
    是可选的。如果愿意,可以使用
    =
    而不是关键字
    排除
    后的空格
  • 参数
    exclude
    必须放在源之前
  • 使用文件夹名称(如第一个)或*(如第二个)之间的区别是:第二个将在包中包含一个空文件夹,但第一个不会

  • 当我在exclude参数中删除绝对路径时,这对我很有用。关于混合绝对路径和相对路径的提示对我来说很关键,
    -p
    选项的可能重复对于创建函数来说没有任何意义,对吧!?要排除整个文件夹及其内容:tar-pczvf MyBackup.tar.gz/home/user/public_html/--exclude“/home/user/public\u html/tmp/*“我得到了
    tar:错误退出被以前的错误延迟。
    在MacOS中获得错误tar:从成员名称中删除前导“/”无效,我必须使用
    --exclude=“/home/user/public\u html/tmp
    而不是
    --exclude>”“/home/user/public_html/tmp
    忽略我之前无法再编辑的注释:
    exclude
    需要首先指定为注释。至少这是唯一一件对meThanks有效的事情,这对我在旧的Ubuntu 14.04 LTS盒上有效。我也需要在OS X上这样做。“如果文件夹名称中有空间,则需要。”谢谢…这对我在Ubuntu 18.04 LTS上有效