Нет, нет никаких общих решений. Единственный способ проверить, поврежден ли файл, состоит в том, чтобы попытаться считать его; только программное обеспечение, которое знает, как читать, что конкретный формат может сделать это.
То, что Вы могли сделать, использовать file
определить тип файла и затем использовать тип для выбора соответствующей программы для проверки файла. Вы могли записать сценарий как это:
# /bin/bash -eu
FILENAME=$1
FILETYPE="$(file -b $FILENAME | head -1 | cut -d , -f 1)"
case "$FILETYPE" in
"gzip compressed data") CHECKER="gunzip -t" ;;
# many, many more lines here
*) echo "Unknown type: $FILETYPE"; exit 1 ;;
esac
$CHECKER $FILENAME
Но у Вас была бы большая работа, чтобы сделать для заполнения оператора выбора.
Возможно, что кто-то уже записал такой сценарий (или программа), но я не знаю ни о ком.
Вы могли выбрать один из списка сервера. Вероятно, jabberd2 является самым близким к тому, что Вы ищете.
У меня есть установка и используемый ejabberd с большим успехом в прошлом. Это имеет нормальные значения по умолчанию, легко установить (должно быть доступным в Вашем диспетчере пакетов), и это очень устойчиво. Зато, когда Вы растете, ejabberd довольно масштабируем.