« 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 |

Comments

*
Pour prouver que vous n'êtes pas un bot, recopiez le code ci-dessous
Anti-Spam Image