tar: выход с состоянием ошибки из-за предыдущих ошибок

<p>я написал небольшой скрипт, который копирует и сжимает список каталогов + файлов.</p><p>сценарий, по-видимому, успешно выполняется, так как после запуска сценария создается пригодный для использования файл .tar.gz.</p><p>тем не менее, я получаю это надоедливое сообщение после завершения скрипта:</p><blockquote> <p>tar: выход с состоянием ошибки из-за предыдущих ошибок</p> </blockquote><p>я не вижу никаких сообщений об ошибках во время работы скрипта, и, как я уже сказал, созданный файл может быть распакован без предупреждений/ошибок. поскольку я использую это как часть своей резервной копии, я хочу убедиться, что я не игнорирую что-то серьезное.</p><p>каковы возможные причины появления этого сообщения об ошибке/предупреждения - и могу ли я смело его игнорировать? если я не могу проигнорировать это, каковы шаги, чтобы диагностировать и устранить ошибку?</p><p>я работаю на ubuntu 10.0.4</p>

<p>вы получите это сообщение, если по какой-либо причине tar не сможет добавить все указанные файлы в tar. один из наиболее распространенных - отсутствие разрешения на чтение одного из файлов. это может быть большой проблемой, так как вы используете это для резервного копирования. если вы используете флаг <code>-v</code>, попробуйте отключить его. это должно уменьшить выход и позволить вам увидеть, что происходит.</p>

<p>проблема в аргументе, аргумент <code>f</code> принимает имя файла в качестве следующего, поэтому оно должно быть последним в аргументе</p><pre><code>tar cvzf output.tgz folder </code></pre><p>или же</p><pre><code>tar -cvzf output.tgz folder </code></pre><p>то же самое и не принимать ошибку.</p>

<p>у меня возникла та же проблема, и ни один из приведенных выше ответов не помог мне. однако я обнаружил, что работает следующая команда:</p><p><code>tar -cpzf /backups/fullbackup.tar.gz --exclude=backups --exclude=proc --exclude=tmp --exclude=mnt --exclude=sys --exclude=dev --exclude=run /</code></p><p>ошибки, на которые ссылались в <code>tar: exiting with failure status due to previous errors</code>, можно определить, отключив опцию -v. после проверки ошибки пришли из каталогов, таких как <code>/run</code> и <code>/sys</code>.</p><p>исключая эти каталоги, он работает просто отлично. надеюсь, что это поможет любому с подобной проблемой.</p>

<p>иногда при резервном копировании файлов, которые могут изменяться во время резервного копирования, таких как файлы журналов, может оказаться полезным параметр tar '--ignore-failed-read' (я работаю в debian linux, не уверен, что это не gnu tar).</p><p>стандартный вывод и ошибка могут быть перенаправлены в 2 разных файла что-то вроде:</p><pre><code>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 </code></pre><p>я считаю, что это в целом безопасно, но, пожалуйста, будьте осторожны, поскольку tar не остановится ...</p>

<p>у меня такая же проблема. все, что я сделал, это удалил черту ("-") из команды.</p><p>вместо того, чтобы печатать как</p><blockquote> <p>tar -cvfz output.tar.gz folder /</p> </blockquote><p>попробуйте ввести это как</p><blockquote> <p>папка tar cvfz output.tar.gz /</p> </blockquote><p>я не знаю, почему приборная панель вызывала проблемы в моем случае, но по крайней мере это работало.</p>

<p>вы неправильно поняли предыдущий ответ. проблема не в <code>-</code>, а в том, где <code>f</code> находится в вашем списке аргументов.</p><pre><code>tar cvfz target.tgz <files> </code></pre><p>попытка создать архив с именем "z", так как это текст после <code>f</code>. сообщение об ошибке вызвано тем, что tar не может найти "target.gz" для добавления в архив "z".</p><pre><code>tar cvzf target.tgz <files> </code></pre><p>будет правильно создавать target.tgz и добавлять в него файлы. это потому, что target.tgz является первым текстом после аргумента <code>f</code>.</p>

<p>обычно вы можете игнорировать это сообщение. если есть какие-либо изменения (такие как удаление/создание/изменение файлов) в базовом дереве каталогов во время создания tar, он выдаст это сообщение. также, если есть специальные файлы, такие как узлы устройства, fifos и т.д., они вызовут это предупреждение.</p><p>вы уверены, что не видите никаких файлов преступников? попробуйте с <code>tar cvfz yourtarball.tgz /your/path</code></p>