繁体   English   中英

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

[英]Excluding directory when creating a .tar.gz file

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

现在我正在尝试创建/public_html/.tar.gz ,不包括/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 的文件.

我做错了什么?

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

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

请注意exclude参数:

1- 应与=一起使用,如下所示:-- --exclude=PATTERN

2- 期望一个模式(正如用户Don Dilanga指出的那样),而不是一个目录,尽管如果目录的长度足以不匹配任何单个文件,那么它可以作为模式很好地工作。

3- 必须放在源目录之前。 (正如kghbln所指出的)

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

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

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

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

确保将--exclude 放在源和目标项目之前

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

tar -tf backup.tar.gz

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

将工作

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

这对我有用:

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

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

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

然后它起作用了。

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

尝试这个

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

exclude 选项需要包含=符号,并且"不是必需的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM