ExtendCopy : lister, copier et vérifier des fichiers tout en gardant le contrôle

Publication d’une nouvelle application libre pour faire des copies de fichiers en se basant sur des listes simples et éditables

Publié le

ExtendCopy est une ancienne application que j’avais développé il y a un certain temps, et j’ai décidé, encore une fois, de nettoyer le code (merci le refactoring d’Eclipse) et de publier tout ça sur Github en tant que logiciel libre.

C’est encore une fois une application Java, multiplateforme, pour un usage très spécifique, celui de copier une masse de fichiers, tout en permettant facilement de limiter cette copie qu’a certains fichiers, et de pouvoir prouver que les copies sont conforment aux originaux, même si ceux-ci ne sont pas/plus disponibles. Par quelle magie ? Et bien par le calcul et la vérification d’une somme de contrôle pour chaque copié. En gardant ces listes de sommes de contrôle il est simple de refaire une vérification de chaque fichier.

Dans le cadre d’une opération ou d’un workflow d’archivage, ou d’un transfert d’un gros volume de fichiers, ces fonctionnalités deviennent nécessaires. Par exemple : vous avez un NAS, allez on va dire de 10 To, archi plein de rushs, de rendus, d’exports… Vous avez cassé votre tirelire pour une solution sérieuse, dans le genre SAN à 50 To + robot LTO. Vous devez donc recopier vos 10 To dans votre nouvelle solution de stockage. Allez vous faire un simple glissé déposé entre les deux lecteurs réseau ? Si la copie échoue en cours, vous repartez de 0 ? Si vous n’avez pas besoin de copier certains dossiers ou certains fichiers, allez vous les supprimer à la main, dossier après dossier ? Alors que cela serait tellement simple de trier tout ça dans Excel ? Comment pouvez vous-êtres sur que la copie c’est bien déroulée et que tous les fichiers (prévus) on bien été copiés ? Comment pouvez vous savoir qu’il n’y a pas un âne qui utilise encore ce stockage et qui a modifié un fichier trop récemment ?

Avant cette appli, je devais jongler avec les commandes unix telles que find, cp, md5sum, grep, wc, diff, cat, et des scripts bash… C’était long, parfois risqué, et à chaque copie, hop on repart de 0 sur les scripts. Sans compter les prises de têtes avec les transferts Mac vers Linux ou Windows vers Linux… (oui, il existe des gens qui mettent des tabulations, des sauts de lignes et des « / » dans des noms de fichiers…)

L’outil magique, que l’on pense pour faire tout ceci, c’est rsync. Sauf que vous ne maitrisez pas (facilement) le choix des fichiers à copier, qu’il n’est pas capable de vous sortir des sommes de contrôle pour chaque fichier copié (imposant le passage de commandes comme md5sum, explosant le temps de l’opération), et que la vérification intrinsèque des fichiers n’est vraiment pas pratique pour des gros éléments (genre plusieurs Go). Pour faire simple, autant rsync est génial et indispensable, autant pour ce genre de besoin là, c’est à oublier. Même combat pour rdiffbackup et unison.

Je vous invite à lire la documentation d’ExtendCopy, en français et que j’espère être bien claire.

C’est outil est stable et parfaitement fonctionnel, sans bug connus pour le moment (si vous en trouvez, soyez sympa, partagez les moi). De sa nature un peu « différente » pour ce genre d’utilitaire, je vous invite à faire des tests, bien entendu.

Téléchargement : sur github