« comparer dates | Home | bips machine »
datapacker
posté par cep le 29 septembre 2008
Je voulais graver sur cdrom de nombreuses photos, tout en conservant le classement initial et l’ordre chronologique. Après quelques recherches, grâce à The Changelog j’ai enfin trouvé datapacker qui me semble pour le moment la solution idéale.
Pour son installation, un paquet deb est disponible pour debian lenny et sid en version 1.0.1, et ubuntu intrepid en version 1.0.0.
Datapacker est très rapide, car on peut utiliser l’option hardlink qui ne copie pas réellement le document à archiver mais fait un lien “en dur”, pointant sur l’emplacement physique du fichier source. De ce fait les copies des répertoires source ne prennent pas de place sur le système de fichiers, et on peut supprimer ensuite ces liens sans risque pour la source.
Si l’on utilise l’option hardlink, il faudra rester sur le même système de fichiers (partition). Il faut aussi créer le répertoire de destination des listes de fichiers à graver. Pour l’exemple nous l’appellerons bins.
On peut préciser aussi en option quelle taille donner aux fragments des sauvegardes, suivant que l’on veut les graver sur cdrom ou dvdrom, ou tout autre destination.
Nous utiliserons aussi les option :
-D pour préserver la structure des répertoires source, leur agencement. Cette option est aussi utile s’il y a des fichiers avec le même nom dans différents répertoires source.
-p pour conserveer l’organisation des répertoires source et l’ordre chronologique s’il y en a un. Les photos par exemples ne seront pas déplacées d’un dossier à un autre pour permetre de satisfaire la taille des répertoires demandé
-b pour formater le nom des fichiers de destination, par exemple avec %03d pour nommer chaque répertoire par un nombre à trois chiffres.
Exemple d’utilisation pour décomposer le dossier ~/photos/ en containers de 600 Mo :
On utilise find avec le paramètre -iname afin de faire porter la recherche sur des noms des fichiers indifféremment en majuscule ou en minuscule, et “*.[j-p]*g” pour sélectionner toutes les extensions jpeg, jpg, png.
Avec l’option -b et %03d les noms des répertoires de sauvegarde seront composés de trois chiffres.
Ce qui, sur deux lignes ( \ ) pour en simplifier la lecture, donne les commandes :
:~$ cd ; mkdir bins
:~$ find ~/photos -iname "*.[j-p]*g" -print0 | \ datapacker -0Dp -s 600m --sort -a hardlink -b ~/bins/%03d -Il a ainsi été créé quatre sous-dossiers (containers) portant les noms de 001, 002, 003, 004 dans le répertoire ~/bins/. On peut en vérifier la taille par la commande :
:~$ du -sh bins/00* 601M bins/001 600M bins/002 599M bins/003 18M bins/004
Pour montrer en détail le fonctionnement de l’option hardlink, avec ls -i on va regarder le numéro d’inode de quelques photos de la “sauvegarde”, et les comparer avec les numéros d’inodes des photos sources :
:~$ ls -i1 bins/003/home/sidcep/photos/soudan/ 212725 cailloux2.jpg 81862 cailloux.JPG 81860 P1010081.JPG 81864 P1010083.JPG 81866 P1010084.JPG 81868 P1010085.JPG 81824 P1010086.JPG sidcep@phusis:~$ ls -i1 /home/sidcep/photos/soudan/ 212725 cailloux2.jpg 81862 cailloux.JPG 81860 P1010081.JPG 81864 P1010083.JPG 81866 P1010084.JPG 81868 P1010085.JPG 81824 P1010086.JPG
Ce sont bien les mêmes inodes, ce qui prouve qu’il n’a pas été fait une copie réelle de l’original, et que l’on ne peut parler de sauvegarde tant que la gravure des listes n’a pas été réalisée.
Pour la petite histoire, on aurait aussi pu comparer les inodes par :
:~$ stat -c %i /home/sidcep/photos/soudan/cailloux.JPG ~/bins/003/home/sidcep/photos/soudan/cailloux.JPG 81862 81862
ou par :
:~$ find . -inum 81862 -print0 ./bins/003/home/sidcep/photos/soudan/cailloux.JPG ./photos/soudan/cailloux.JPG
ou bien :
:~$ find . -samefile ~/photos/soudan/cailloux.JPG -print0 ./bins/003/home/sidcep/photos/soudan/cailloux.JPG ./photos/soudan/cailloux.JPG
Par un pipe, on peut aussi demander à ce que datapacker passe la main directement à genisoimage pour graver les cdroms. D’autres exemples d’utilisation sont présentés dans les pages man.
cep
Topics: Général, debian, linux, ubuntu |
