#!/bin/bash # Script d'initialisation de la base de donnée. Crée le fichier s'il n'existe # pas, crée la base de donnée, puis la remplie avec les premières images. # Vérifie que la base n'existe pas déjà if [ -f $DATABASE ] then echo "Le fichier existe déjà." >&2 exit 1 fi # Création de la base de données echo "Création de la base de données" # Le flag e interdit les erreurs. Si une commande échoue après celle-ci, le # script s'arrête. set -e # On lance les commandes sqlite sqlite3 $DATABASE \ "CREATE TABLE fichier(chemin TEXT PRIMARY KEY, checksum INTEGER, taille INTEGER);" sqlite3 $DATABASE "CREATE TABLE controle( chemin TEXT, date INTEGER, checksum INTEGER, taille INTEGER, status TEXT, FOREIGN KEY(chemin) REFERENCES fichier(chemin), PRIMARY KEY(chemin,date) );" # Autorise à nouveau les erreurs, find pouvant renvoyer un code d'erreur 1 en # cas de problème de droits (notamment sur les fichiers spéciaux) set +e # On récupère la liste de tous les fichiers ayant le bit SUID echo "Récupération des fichiers ayant le bit SUID" fichiers=$(find / -perm -4000 2> /dev/null) # Pour chaque fichier de la liste echo "Insertion des images de départ dans la base de données" for f in $fichiers do # On récupère son checksum checksum=$(cksum $f | cut -d' ' -f 1) taille=$(cksum $f | cut -d' ' -f 2) # Et on insère le couple chemin, checksum dans la base sqlite3 $DATABASE "INSERT INTO fichier VALUES('$f', $checksum, $taille);" done