Ma question porte sur la sauvegarde de plusieurs fichiers de plusieurs répertoires dans un seul répertoire en conservant toutes les anciennes versions des fichiers. J'ai environ 10 répertoires contenant des fichiers très similaires (10 répertoires de sauvegarde créés sous Linux, Windows et MacOS). Je veux concaténer ces 10 répertoires en un seul. Par exemple, j'ai 3 répertoires a, b et c avec le contenu suivant :
-
a
- fileA.txt (date 10/10/2012)
- fileB.txt (date 10/12/2012)
- fileC.txt (date 01/05/2013)
-
b
- fileA.txt (date 10/01/2013)
- fileB.txt (date 10/02/2013)
- fileC.txt (date 01/05/2013)
- fileD.txt (date 02/05/2013)
-
c
- fileA.txt (date 10/10/2012)
- fileB.txt (date 12/02/2013)
Le répertoire résultant doit être :
- fileA.txt (date 10/01/2013 de b)
- fileA.txt_20121010hhmmss (de a et c (même fichier))
- fileB.txt (date 12/02/2013 de c)
- fileB.txt_20121210hhmmss (de a)
- fileB.txt_20130210hhmmss (de b)
- fileC.txt (date 01/05/2013 de a et b (même fichier))
- fileD.txt (date 02/05/2013 de b)
hh=heures mm=minutes ss=secondes
Actuellement, je travaille sur un script Perl qui peut comparer les fichiers en utilisant la fonction "compare" et une somme de contrôle md5.
Pour trouver la date de modification (si les fichiers sont différents), j'utilise les métadonnées (quand je peux) en utilisant Exiftool (quelques fichiers compatibles comme docx, ppt pdf jpg...) sinon j'utilise l'horodatage en utilisant la commande stat.
Le fichier sans l'extension ajoutée doit être le plus récent de tous les fichiers portant le même nom.
Le script de Perl est très lent et complexe, c'est pourquoi je cherche une solution plus robuste.
Merci pour votre aide.
NB : - Je souhaite utiliser cette solution sur un serveur Synology (DS212) sur lequel je n'ai que très peu de commandes classiques Shell. Si nécessaire, je peux copier ces fichiers sur une machine linux (ou OSX) pour faire cela.