У меня есть скрипт bash, который создает файл .tar. Как только файл создан, я хотел бы проверить его целостность и отправить электронное письмо пользователю root, если целостность плохая.
Я знаю, что мне нужно было бы использовать команду tar -tf /root/archive.tar
для проверки целостности файла, но как бы я реализовал это в операторе bash if и проверил ошибки?
tar
вывод/dev/null
, так как вы, вероятно, на самом деле не хотите его видеть.tar
реализации обнаруживают или сообщают обо всех ошибкахt
(bsdtar
нет, вы можете использовать ихtar xOf file.tar > /dev/null
там). Не всеtar
реализации будут выходить со статусом выхода 2,star
(255) otbsdtar
(1) нет, но важно то, что статус выхода здесь не равен нулю.exit(2)
меня в отношении к соответствующей странице руководству, а не точное значения выхода (именно поэтому я имел »ненулевой« явно упоминается в следующем предложении). Аннотировал это (и изменил раздел на правый -.-).извините, но вы не можете, кажется, что tar не имеет возможности тестирования (например, если вы забыли о * nix и попытались протестировать его с помощью winrar, результатом будет: «Команда не поддерживается для этого типа архива»)
как я указывал в комментариях выше, tar буквально не имеет внутреннего CRC, чтобы иметь термин сравнения, поэтому, если вы измените архив tar с редактором, листинг и извлечение могут работать без ошибок, но извлекать поврежденные данные
В заключение я в конечном итоге надеюсь на решение, но его нет, к счастью, есть две хорошие новости:
есть очень, очень, ОЧЕНЬ редкие tar-архивы, которые также не сжимаются другой программой (например, gzip, bzip2 и т. д.), поэтому у этой программы будет решение для тестирования, и люди, которые их не сжимают, довольно неубедительны, ДЕЙСТВИТЕЛЬНО ГЛАВНЫЕ
из-за моей личной проблемы, мне повезло, после распаковки я просто нашел файл md5sum с CRC всех файлов внутри (даже тот, кто поместил архив tar в сеть и не хотел его сжимать, все равно хотел быть можно проверить)
источник
Вы можете сделать это, передав следующие аргументы
tar
:источник
-c
создает файл с именем via-f
('test.tar').-z
архив gzips-v
делает это многословным. Я уверен, что это не точное решение.