it-swarm-ru.tech

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

Я написал небольшой скрипт, который копирует и сжимает список каталогов + файлов.

Сценарий, по-видимому, успешно выполняется, так как после запуска сценария создается пригодный для использования файл .tar.gz.

Тем не менее, я получаю это надоедливое сообщение после завершения скрипта:

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

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

Каковы возможные причины появления этого сообщения об ошибке/предупреждения - и могу ли я смело его игнорировать? Если я не могу проигнорировать это, каковы шаги, чтобы диагностировать и устранить ошибку?

Я работаю на Ubuntu 10.0.4

71
morpheous

Вы получите это сообщение, если по какой-либо причине tar не сможет добавить все указанные файлы в tar. Один из наиболее распространенных - отсутствие разрешения на чтение одного из файлов. Это может быть большой проблемой, так как вы используете это для резервного копирования. Если вы используете флаг -v, попробуйте отключить его. Это должно уменьшить выход и позволить вам увидеть, что происходит.

91
KeithB

проблема в аргументе, аргумент f принимает имя файла в качестве следующего, поэтому оно должно быть последним в аргументе

tar cvzf output.tgz folder

или же

tar -cvzf output.tgz folder

то же самое и не принимать ошибку.

22
Andrea Monni

У меня возникла та же проблема, и ни один из приведенных выше ответов не помог мне. Однако я обнаружил, что работает следующая команда:

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.

Исключая эти каталоги, он работает просто отлично. Надеюсь, что это поможет любому с подобной проблемой.

5
DomainsFeatured

Иногда при резервном копировании файлов, которые могут изменяться во время резервного копирования, таких как файлы журналов, может оказаться полезным параметр 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 не остановится ...

5
Fabio Pedrazzoli

У меня такая же проблема. Все, что я сделал, это удалил черту ("-") из команды.

Вместо того, чтобы печатать как

tar -cvfz output.tar.gz folder /

попробуйте ввести это как

папка tar cvfz output.tar.gz /

Я не знаю, почему приборная панель вызывала проблемы в моем случае, но по крайней мере это работало.

3
jack

Вы неправильно поняли предыдущий ответ. Проблема не в -, а в том, где f находится в вашем списке аргументов.

tar cvfz target.tgz <files>

Попытка создать архив с именем "z", так как это текст после f. Сообщение об ошибке вызвано тем, что tar не может найти "target.gz" для добавления в архив "z".

tar cvzf target.tgz <files>

Будет правильно создавать target.tgz и добавлять в него файлы. Это потому, что target.tgz является первым текстом после аргумента f.

1
Thornbury

Обычно вы можете игнорировать это сообщение. Если есть какие-либо изменения (такие как удаление/создание/изменение файлов) в базовом дереве каталогов во время создания tar, он выдаст это сообщение. Также, если есть специальные файлы, такие как узлы устройства, fifos и т.д., Они вызовут это предупреждение.

Вы уверены, что не видите никаких файлов преступников? Попробуйте с tar cvfz yourtarball.tgz /your/path

0
Janne Pikkarainen