#!/bin/bash ##### Переменные ##### BASE_DIR="/var/opt/usr" BASE_FILE="key.txt" LIST_DIR="list" LIST_FILE="control.list" BACKUP_DIR="backup" ##### ЕСЛИ ПЕРВЫЙ ЗАПУСК, ТО ###### ##### Проверка наличия директорий и файлов ##### #Наличие директории# if ! [ -d $BASE_DIR ]; then clear echo echo "Создание директорий..." mkdir -p $BASE_DIR mkdir -p $BASE_DIR/$LIST_DIR mkdir -p $BASE_DIR/$BACKUP_DIR fi #Наличие файла# if ! [ -f $BASE_DIR/$BASE_FILE ]; then echo echo 'Создание файла БД...' touch $BASE_DIR/$BASE_FILE echo echo 'Создание файла списка...' touch $BASE_DIR/$LIST_DIR/$LIST_FILE echo echo 'Вам необходимо заполнить файл-список!' exit 0 fi filesize1=$(stat -c%s "$BASE_DIR/$BASE_FILE") filesize2=$(stat -c%s "$BASE_DIR/$LIST_DIR/$LIST_FILE") if [ $filesize1 -eq 0 ]; then if [ $filesize2 -eq 0 ]; then clear echo echo "Вам необходимо заполнить файл-список!" echo exit 0 else echo echo "Рассчет контрольных сумм файлов" echo ##### Считываем файлы и пишем в БД ##### FILE=$BASE_DIR/$LIST_DIR/$LIST_FILE while read line; do CONT_SUMM=`cksum "$line"|awk '{print $1}'` echo "$line $CONT_SUMM" >> $BASE_DIR/$BASE_FILE ##### Делаем резервные копии. Это только для себя и небезопасно совсем!!!!!!!!!! ### cp $line $BASE_DIR/$BACKUP_DIR done < $FILE echo "Готово!" echo fi fi ##### Проверка контрольной суммы, вывод сообщения ##### FILE=$BASE_DIR/$LIST_DIR/$LIST_FILE FILE2=$BASE_DIR/$BASE_FILE while read line; do C1=`cksum "$line"|awk '{print $1}'` while read line2; do L=`echo "$line2"|awk '{print $1}'` if [ $line = $L ]; then C2=`echo "$line2"|awk '{print $2}'` if ! [ $C1 -eq $C2 ]; then echo echo "ВНИМАНИЕ! Изменение контрольной суммы файла $line" fi fi done <$FILE2 done < $FILE