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

时间:2010-11-27 04:45:39

标签: linux gzip tar compression

我有一个/public_html/文件夹,在该文件夹中有一个/tmp/文件夹,其中包含70 GB的文件,我并不真正需要。

现在我正在尝试创建一个.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,我确信/public_html/没有/tmp/没有超过1GB的文件。

我做错了什么?

10 个答案:

答案 0 :(得分:179)

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

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

答案 1 :(得分:36)

尝试将--exclude移至包含之前。

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

答案 2 :(得分:15)

是的,删除尾随/和(至少在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"

将起作用

答案 3 :(得分:8)

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

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

确保将 - 排除在源和目标项之前

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

tar -tf backup.tar.gz

答案 4 :(得分:3)

试试这个

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

答案 5 :(得分:1)

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

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

然后它奏效了。

答案 6 :(得分:1)

这对我有用:

<List id="idList" width="700px" items="{ path:'/ItemSet'}">
  <CustomListItem>
    <Label id="id1" text="{item}" width="350px" />
  </CustomListItem>
  <CustomListItem>
    <Label id="id2" text="{item}" width="350px" />
  </CustomListItem>
</List>

答案 7 :(得分:0)

您也可以只使用一个--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>

答案 8 :(得分:0)

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. 使用文件夹名称(如第1个)或*(如第2个)之间的区别是:第2个将在程序包中包含一个空文件夹,而第一个则不包含。

答案 9 :(得分:-2)

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

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