[英]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 中测试。
exclude
后的=
是可选的。 如果您愿意,可以在关键字exclude
后使用=
代替空格。exclude
必须放在源之前。尝试这个
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.