tar:由于先前的错误,以失败状态退出

tar:由于先前的错误,以失败状态退出

我编写了一个小脚本,可以对目录和文件列表进行 tar 和压缩。

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

然而,脚本运行完成后我收到了这个烦人的消息:

tar:由于先前的错误,以失败状态退出

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

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

我在 Ubuntu 10.0.4 上运行

答案1

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

答案2

问题在于f参数。它将下一个值作为文件名,因此它必须是最后一个参数:

tar cvzf output.tgz folder

或者:

tar -cvzf output.tgz folder

这些都是相同的并且不会产生错误。

答案3

有时备份在备份过程中可能会发生变化的文件(如日志文件),您可能会发现 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

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

答案4

我遇到了同样的问题。我所做的就是从命令中删除破折号(“-”)。

而不是输入如下内容

tar -cvfz 输出.tar.gz 文件夹/

尝试输入如下内容

tar cvfz 输出.tar.gz 文件夹/

我不知道为什么这个破折号会给我带来麻烦,但至少它起作用了。

相关内容