Astuce à la con : trouver des fichiers avec locate
Je vais faire râler certains sysadmins en parlant de cette commande aujourd’hui, mais vous verrez qu’elle a ses avantages. En effet, depuis qu’on est sur ISPConfig, certes le blog est sauvegardé par le bousin, mais je n’avais plus de copie sur mon serveur perso (bon, en même temps j’avais plus de serveur non plus, l’un dans l’autre…). Et donc j’ai fait appel à locate pour retrouver ces sauvegardes, parce que j’avais juste besoin de savoir où elles se trouvent.
Contexte
Je sais, parce qu’il me les affiche, que ISPConfig crée bien les sauvegardes pour mon blog :
Et donc je suis à la recherche de ces fameux fichiers, parce que j’ai besoin de les exporter hors du serveur. Ce que je faisais avec mon script de backup avant qu’on bascule sur ISPConfig, souvenez-vous.
La pratique
Au début, je cherchais simplement un dossier, mais comme je suis un gros flemmard, que le nom du fichier est donné, voilà ce que j’ai fait :
1 2 3 |
root@vox:/var/www/blog.seboss666.info/backup# updatedb root@vox:/var/www/blog.seboss666.info/backup# locate db_c0blog_2015-12-19_00-30.sql.gz /var/backup/web1/db_c0blog_2015-12-19_00-30.sql.gz |
Comment cela fonctionne-t-il ? updatedb est une commande qui fait une indexation des fichiers sur le serveur. Sa première utilisation peut prendre du temps suivant le nombre de fichiers à indexer. locate fouille ensuite dans cette base d’indexation pour ressortir quasi instantanément le chemin d’un fichier, en l’occurrence celui du fichier de sauvegarde. Et si on regarde dans le dossier retourné :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
root@vox:/var/www/blog.seboss666.info/backup# cd /var/backup/web1 root@vox:/var/backup/web1# l total 2473004 -rwxr-x--- 1 root root 3899717 Dec 10 00:31 db_c0blog_2015-12-10_00-31.sql.gz -rwxr-x--- 1 root root 3899694 Dec 11 00:30 db_c0blog_2015-12-11_00-30.sql.gz -rwxr-x--- 1 root root 3899767 Dec 12 00:30 db_c0blog_2015-12-12_00-30.sql.gz -rwxr-x--- 1 root root 3928953 Dec 13 00:31 db_c0blog_2015-12-13_00-31.sql.gz -rwxr-x--- 1 root root 3928984 Dec 14 00:31 db_c0blog_2015-12-14_00-31.sql.gz -rwxr-x--- 1 root root 3929007 Dec 15 00:31 db_c0blog_2015-12-15_00-31.sql.gz -rwxr-x--- 1 root root 3928954 Dec 16 00:30 db_c0blog_2015-12-16_00-30.sql.gz -rwxr-x--- 1 root root 3928834 Dec 17 00:30 db_c0blog_2015-12-17_00-30.sql.gz -rwxr-x--- 1 root root 3930047 Dec 18 00:30 db_c0blog_2015-12-18_00-30.sql.gz -rwxr-x--- 1 root root 3930335 Dec 19 00:30 db_c0blog_2015-12-19_00-30.sql.gz -rwxr-x--- 1 root root 248699347 Dec 10 00:31 web1_2015-12-10_00-30.tar.gz -rwxr-x--- 1 root root 248697710 Dec 11 00:30 web1_2015-12-11_00-30.tar.gz -rwxr-x--- 1 root root 248690219 Dec 12 00:30 web1_2015-12-12_00-30.tar.gz -rwxr-x--- 1 root root 249457454 Dec 13 00:31 web1_2015-12-13_00-30.tar.gz -rwxr-x--- 1 root root 249497424 Dec 14 00:31 web1_2015-12-14_00-30.tar.gz -rwxr-x--- 1 root root 249591311 Dec 15 00:31 web1_2015-12-15_00-30.tar.gz -rwxr-x--- 1 root root 249577706 Dec 16 00:30 web1_2015-12-16_00-30.tar.gz -rwxr-x--- 1 root root 249558093 Dec 17 00:30 web1_2015-12-17_00-30.tar.gz -rwxr-x--- 1 root root 249574126 Dec 18 00:30 web1_2015-12-18_00-30.tar.gz -rwxr-x--- 1 root root 249710524 Dec 19 00:30 web1_2015-12-19_00-30.tar.gz |
Twingo ! Je n’ai maintenant plus qu’à mettre en place un rsync vers un emplacement externe, comme ça je garde une copie de ce dossier ailleurs. Il faudrait que je teste ces sauvegardes aussi, histoire de pas se retrouver avec un truc pourrave inexploitable 😀
Pourquoi pas find ?
Eh bien, parce que je ne sais pas où chercher, que find n’a pas de base de données, et donc travaille directement sur le disque dur. On chercherait donc à chaque fois sur l’intégralité du disque dur, ce qui serait d’une lenteur incommensurable.
Mais je peux comprendre, find a aussi des avantages, comme le fait de chercher sur d’autres critères que le nom, comme la date, ou le type, et d’exécuter aussi des commandes sur les fichiers trouvés. Par exemple, vous trouverez souvent ces deux commandes ensemble pour corriger des droits sur des fichiers d’un site :
1 2 |
find . -type f -exec chmod 644 {} \; find . -type d -exec chmod 755 {} \; |
Deux outils, deux usages
Si vous cherchez simplement un chemin, pensez à locate. Dans d’autres cas, find sera un meilleur allié. Et si vous avez encore mieux à proposer, hésitez pas à partager dans les commentaires. Je gagne déjà pas mal de temps comme ça, mais c’est toujours cool d’en gagner encore plus 🙂
En fait locate n’est pas beaucoup utilisé parce qu’in n’est présent nativement dans les distributions à base de CentOS, mais est présent dans Debian.