Answers:
如果由于某种原因tar无法将所有指定的文件添加到tar中,您将收到该消息。一种(如果最常见的情况)是对其中一个文件没有读取权限。这可能是个大问题,因为您正在使用它进行备份。如果您正在使用该-v
标志,请尝试将其保留。这将减少输出,并让您了解发生了什么。
问题是参数,
f
参数将下一个作为文件名,因此它必须是参数的最后一个
tar cvzf output.tgz folder
要么
tar -cvzf output.tgz folder
是一样的,没有错误。
有时备份在备份期间可能会更改的文件(例如日志文件),您可能会发现tar选项“ --ignore-failed-read”很有用(我在Debian Linux上,不确定是否使用非gnu tar)。
可以将标准输出和错误重定向到2个不同的文件中,例如:
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不会停止...
我遇到了同样的问题,以上答案都对我没有帮助。但是,我发现运行以下命令有效:
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
。
通过排除这些目录,它可以正常工作。希望这对遇到类似问题的人有所帮助。
我有同样的问题。我所做的就是从命令中删除破折号(-)。
而不是将其键入为
tar -cvfz output.tar.gz文件夹/
尝试输入为
tar cvfz output.tar.gz文件夹/
我不知道为什么破折号引起了我的问题,但至少起了作用。
-f
应该在两者之间,output.tar.gz
并且不能z
在两者之间。如果不重新排列选项,则正确的是:tar -cvf output.tar.gz -z folder/
。旧样式希望所有选项都放在一个地方,所有参数都在后面。
您误解了先前的答案。问题不在于-
,而是f
参数列表中的。
tar cvfz target.tgz <files>
将尝试创建一个名为“ z”的档案,因为该档案后面的文本f
。错误消息是因为tar找不到要添加到存档“ z”的“ target.gz”。
tar cvzf target.tgz <files>
将正确创建target.tgz并向其中添加文件。这是因为target.tgz是f
参数之后的第一个文本。
对于初学者来说,出现此错误的原因之一是 他们忘记在存在文件的目录中执行操作 转到该位置并执行命令 由于我的文件在桌面上 〜/ Desktop#tar-cf done.tar abc xyz 其中xyz和abc是文件,我们将这些文件存储在done.tar中 如果我们在其他位置执行命令,将得到以上错误