Я нашел вопрос, Как определить, являются ли данные допустимым файлом tar без файла?, но я задавался вопросом: существует ли готовое решение для командной строки?
А как насчет того, чтобы просто получить список тарбола и выбросить вывод, а не распаковывать файл?
tar -tzf my_tar.tar.gz >/dev/null
Редактировано согласно комментарию. Спасибо zrajm!
Редактирование согласно комментарию. Спасибо Frozen Flame! Этот тест ни в коем случае не подразумевает целостность данных. Потому что он был разработан как ленточная утилита для архивирования, большинство реализаций tar позволит сделать несколько копий одного и того же файла!
.для проверки целостности файлов можно воспользоваться опцией gzip -t
http://linux.about.com/od/commands/l/blcmdl1_gzip.htm
Для проверки того, что gzip-файл не поврежден:
gunzip -t file.tar.gz
Для проверки того, что tar-файл внутри не поврежден:
gunzip -c file.tar.gz | tar t > /dev/null
В рамках резервного копирования вы, вероятно, можете просто выполнить последнюю команду и проверьте значение $? после этого на 0 (успех). Если смола или у цыганки есть проблема, $? будет не нулевое значение.