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). Вывод

Стандартный вывод и ошибка могут быть перенаправлены в 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
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 и т.д., они вызовут это предупреждение.

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