![]() |
nettoyage de la DB de Darktable - Version imprimable +- Forum darktable FR (https://forums.darktable.fr) +-- Forum : Utilisation de darktable (https://forums.darktable.fr/forumdisplay.php?fid=97) +--- Forum : Trucs et Astuces (https://forums.darktable.fr/forumdisplay.php?fid=87) +--- Sujet : nettoyage de la DB de Darktable (/showthread.php?tid=1920) |
nettoyage de la DB de Darktable - LViatour - 02-11-17 Bonjour à tous, Je fais énormément de photos, mon D5 qui a un peu moins de deux ans à déjà 225.000 déclenchements. Une fois que les travaux de mes clients sont terminés, j'efface mes dossiers raw. Mais Darktable semble garder tout cela dans sa DB et cela commence à faire beaucoup. Il y a une manière propre de nettoyer cette DB? RE: nettoyage de la DB de Darktable - patrick L - 02-11-17 oui y a un script qui permet de faire ca... debut du script --- :~$ cat scripts/purge_darktable # ne pas copier coller cette ligne #!/bin/bash # # DARKTABLE DATABASE CLEANER # # This script removes from the database the files # that are not located where they are supposed to be. # # USAGE : # ./darktable_db_cleaner.sh # Will use the database located in : # ~/.config/darktable/library.db # # ./darktable_db_cleaner.sh /path/to/library.ext # Will use the specified database # # Created by Rufus Wilson # contact : marsou75@gmail.com # if [ ! "`type -t sqlite3`"=="file" ] ; then echo "sqlite3 is required" sudo apt-get install sqlite3 fi if [ -f "$1" ] ; then library="$1" else library="/home/"$USER"/.config/darktable/library.db" fi for film_roll_id in `sqlite3 -noheader -list -interactive $library "SELECT id FROM film_rolls WHERE 1 ORDER BY id ASC;"` do film_roll_folder="`sqlite3 -noheader -list -interactive $library "SELECT folder FROM film_rolls WHERE id=$film_roll_id ORDER BY id ASC;"`" echo "*** "$film_roll_folder" ***" echo "-- cleaning database" for photo_id in `sqlite3 -noheader -list -interactive $library "SELECT id FROM images WHERE film_id=$film_roll_id ORDER BY filename ASC;"` do photo_filename=`sqlite3 -noheader -list -interactive $library "SELECT filename FROM images WHERE id=$photo_id ORDER BY filename ASC;"` if [ ! -f "$film_roll_folder/$photo_filename" ] ; then echo $photo_filename" deleted" sqlite3 -noheader -list -interactive $library "DELETE FROM images WHERE id=$photo_id;" fi done nb=`sqlite3 -noheader -list -interactive $library "SELECT count(id) FROM images WHERE film_id=$film_roll_id ORDER BY filename ASC;"` if [ "$nb" -eq "0" ] ; then sqlite3 -noheader -list -interactive $library "DELETE FROM film_rolls WHERE id=$film_roll_id;" fi echo " ->cleaned" done # Shrink the size of database sqlite3 -noheader -list -interactive $library "VACUUM" -- fin du script copier coller de #!/bin/bash jusque avant --- fin du script dans un fichier par exemple purge_darktable et ensuite faire chmod 700 purge_darktable et c'est bien de mettre dans un dossier $HOME/scripts/ le fichier scripts à rentrer dans PATH dans le fichier .profile ou .bashrc RE: nettoyage de la DB de Darktable - LViatour - 02-11-17 Ce serait bien d'avoir un truc plus "grand public" dans l'interface du logiciel (dans les préférences par exemple). RE: nettoyage de la DB de Darktable - mmoy - 02-11-17 Il y a un script fourni avec darktable (dans les sources au moins) : https://github.com/darktable-org/darktable/blob/master/tools/purge_non_existing_images.sh C'est moins bien qu'un truc bien intégré dans l'interface, mais c'est déjà ça. RE: nettoyage de la DB de Darktable - jpg54 - 02-11-17 Ce n'est pas le même script, celui que tu proposes enlève les photos qui n'existent plus. RE: nettoyage de la DB de Darktable - Dual - 02-11-17 Bonjour, Et sous windows on fait comment? RE: nettoyage de la DB de Darktable - mmoy - 02-11-17 > Ce n'est pas le même script, celui que tu proposes enlève les photos qui n'existent plus. Ce n'est pas le même script, mais c'est bien ce que cherche LViatour, non ? Et c'est aussi ce que fait le script posté par Patrick L. > Et sous windows on fait comment? Les windows modernes savent exécuter des scripts shell (via le Linux Subsystem), sinon il y a msys qui permet ça. Clairement pas user-friendly, mais a priori possible. L'autre option étant bien sûr d'envoyer un patch pour que ça marche direct de l'interface graphique ;-). RE: nettoyage de la DB de Darktable - Dual - 02-11-17 Merci pour la réponse. |