2010-07-29 07:17:55 +0000 2010-07-29 07:17:55 +0000
84
84

焦油。由于之前的错误,退出时出现失败状态

我写了一个小脚本,它可以将目录+文件的列表进行压缩。

脚本似乎运行得很成功,因为在脚本运行后,创建了一个可用的.tar.gz文件。

然而,在脚本完成后,我得到了这个恼人的消息:

tar:

当脚本运行时,我没有看到任何错误信息,就像我说的,生成的文件可以解压,没有警告/错误。由于我将此作为备份的一部分,我想确保我没有忽略一些严重的问题。

产生此错误/警告信息的可能原因是什么 - 我可以安全地忽略它吗?如果我不能忽略它,诊断和解决该错误的步骤是什么?

我在Ubuntu 10.0.4上运行。

答案 (9)

106
106
106
2010-07-29 11:22:18 +0000

如果由于任何原因,tar 无法将所有指定的文件添加到 tar 中,你会收到该消息。其中一个最常见的原因是对其中一个文件没有读取权限。这可能是个大问题,因为你是用它来备份的。如果你使用的是 -v 标志,试着不使用它。这应该会减少输出,让你看到发生了什么。

23
23
23
2013-01-28 09:21:24 +0000

问题是参数,f参数取下一个作为文件名,所以一定是参数

tar cvzf output.tgz folder

的最后一个或

tar -cvzf output.tgz folder

是一样的,没有取错。

6
6
6
2014-01-17 12:24:36 +0000

有时备份文件时可能会在备份过程中发生变化,比如日志文件,你可能会发现tar选项’–ignore-failed-read'很有用(我在Debian Linux上,不确定非gnu tar的情况)。

标准输出和错误可以用两个不同的文件来重定向,比如说

LOGDIR='/var/log/mylogdir' 
LOG=${LOGDIR}/backup.log 
ERRLOG=${LOGDIR}/backup.error.log 
DATE=$(date +%Y-%m-%d)
HOSTNAME=$(hostname)
DATA_DIRS='/etc /home /root'

tar --ignore-failed-read -f ${BACKUP_DIR}/${HOSTNAME}-${DATE}.tgz -cvz ${DATA_DIRS} > $LOG 2> $ERRLOG

我发现这通常是安全的,但请小心,因为tar不会停止……

5
5
5
2016-10-10 15:03:38 +0000

我也有同样的问题,上面的答案对我来说都没有用。然而,我发现运行以下命令可以解决。

tar -cpzf /backups/fullbackup.tar.gz --exclude=backups --exclude=proc --exclude=tmp --exclude=mnt --exclude=sys --exclude=dev --exclude=run /

tar: Exiting with failure status due to previous errors中提到的错误可以通过关闭-v选项来识别。经审查,错误来自于/run/sys等目录。

通过排除这些目录,就能正常工作。希望能帮助有类似问题的人。

3
3
3
2011-09-10 23:06:14 +0000

我也有同样的问题。我所做的就是把命令中的破折号("-“)去掉。

而不是输入

tar -cvfz output.tar.gz folder/

试试输入

tar cvfz output.tar.gz folder/

我不知道为什么破折号在我的情况下会引起问题,但至少它是有效的。

2
2
2
2013-10-19 07:52:47 +0000

你误解了之前的一个答案。问题不在于-,而是f在你的参数列表中的位置。

tar cvfz target.tgz <files>

将尝试创建一个名为 “z "的存档,因为那是f之后的文本。错误信息是因为 tar 找不到 "target.gz "来添加到存档 "z"。

tar cvzf target.tgz <files>

将正确创建 target.tgz 并将文件添加到其中。这是因为 target.tgz 是 f 参数之后的第一个文本。

0
0
0
2019-10-15 15:49:46 +0000
One of the reason to get this errors for beginners is that They forget to perform operations in the directory where the files are present Go to that location and perform the command As my files are in desktop ~/Desktop# tar - cf done.tar abc xyz Where xyz and abc are files and we are storing those files in done.tar If we go and perform the command in other location we will get above error
0
0
0
2019-04-23 18:33:45 +0000

我在解开收到的一个文件时也遇到了类似的问题。原来我没有权限写入root拥有的存档中的文件。用sudo解决了这个问题。

0
0
0
2010-07-29 07:26:01 +0000

通常你可以忽略该消息。如果在创建 tar 的过程中,对底层目录树有任何更改(如文件删除/创建/修改),它就会抛出该消息,如果有特殊文件,如设备节点、fifos 等,也会引起该警告。如果有特殊的文件,如设备节点、fifos等,也会引起该警告。

你确定你看不到任何罪魁祸首的文件吗?用tar cvfz yourtarball.tgz /your/path试试。