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

sur*_*esh 111 linux compression gzip tar

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

现在,我想创建一个.tar.gz/public_html/排除/tmp/

这是我跑的命令:

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/" 
Run Code Online (Sandbox Code Playgroud)

tar仍在创建,通过做一个ls -sh我可以看到MyBackup.tar.gz已经有大约30gb,我肯定知道/public_html/没有/tmp/超过1GB的文件.

我做错了什么?

Vic*_*mar 192

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

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 
Run Code Online (Sandbox Code Playgroud)

  • 要排除整个文件夹及其内容:tar -pczvf MyBackup.tar.gz/home/user/public_html/--exclude"/ home/user/public_html/tmp/*" (7认同)
  • 忽略我之前无法编辑的评论:`exclude` 需要首先指定为 /sf/users/273295641/ 注释。至少这是唯一对我有用的东西 (3认同)
  • 不起作用,我不得不使用`--exclude =“ / home / user / public_html / tmp`而不是`--exclude” / home / user / public_html / tmp` (2认同)

Mar*_*ten 37

尝试--exclude在包含之前移动到.

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 
Run Code Online (Sandbox Code Playgroud)

  • 我也需要在 OS X 上执行此操作。 (4认同)
  • 删除尾部斜杠后为我工作: `tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp" /home/user/public_html` (2认同)

小智 16

是的,删除尾随/和(至少在ubuntu 11.04中)给出的所有路径必须是相对路径或完整路径.您不能在同一命令中混合绝对路径和相对路径.

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "home/user/start-directory/logs"
Run Code Online (Sandbox Code Playgroud)

不会排除日志目录但是

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "./start-directory/logs"
Run Code Online (Sandbox Code Playgroud)

将工作

  • 当我删除排除参数中的绝对路径时,为我工作。 (2认同)
  • 关于混合绝对路径和相对路径的技巧对我来说很关键 (2认同)

ous*_*aka 8

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

tar --exclude='./folder' --exclude='./upload/folder2' -zcvf backup.tar.gz backup/
Run Code Online (Sandbox Code Playgroud)

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

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

tar -tf backup.tar.gz
Run Code Online (Sandbox Code Playgroud)


Mat*_*ano 7

您还可以仅使用 1 来排除多个--exclude。就像这个例子:

tar -pczf MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/
Run Code Online (Sandbox Code Playgroud)

--exclude=目录名称必须不包含且/必须位于MyBackup.tar.gz/home/user/public_html/之间

语法是:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>
Run Code Online (Sandbox Code Playgroud)


use*_*279 5

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

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/
Run Code Online (Sandbox Code Playgroud)

然后就成功了。


Bla*_*ack 5

这对我有用:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"
Run Code Online (Sandbox Code Playgroud)