[MàJ 28/11/19] Autre cas concret d'utilisation de rsync, avec les mises à jour de MAME
Mise à jour
Attention certaines mises à jour différentielles que l'on trouve pour MAME comportent des ROMs incomplètes. Les fichiers .zip ne contiennent, eux mêmes, que les éléments qui changent à l'intérieur de la ROM.
L'article ci-dessous ne fonctionne qu'avec un diférentiel de ROMs complètes. Vérifiez donc bien vos sources avant d'appliquer la méthode ci-dessous, au risque de rendre invalides toutes les ROMs contenues dans la mise à jour.
Je travaille déjà sur une solution concernant les différentiels partiels, et je ne manquerai pas de vous proposer un nouvel article à ce sujet.
Nous avions utilisé rsync lors de la mise en place d'une sauvegarde parallèle à TimeMachine. Aujourd'hui, le but de ce guide est de montrer une autre utilisation de rsync, car il va nous permettre de fusionner deux dossiers.
Tous les derniers mercredis du mois, l'équipe en charge de MAME, l'émulateur multi-arcade, sort une nouvelle version de son application. A chaque nouvelle version, l'émulation de certains jeux change, et il est nécessaire de mettre à jour les ROMs des jeux correspondant.
Mais la collection complète de MAME pesant plusieurs dizaines de giga-octets, il est préférable de récupérer le différentiel uniquement.
C'est ici que rsync intervient, car il va permettre de fusionner le dossier collection et le dossier de mise à jour, au lieu de faire ce travail manuellement.
Dans un terminal, la commande que j'utilise, est :
rsync -a /Chemin/vers/dossier/mise-a-jour/ /Chemin/vers/romsets/MAME
Il faut, évidemment, remplacer les chemins de l'exemple par les chemins réels de vos dossiers.
Petite astuce, vous pouvez glisser les dossiers l'un après l'autre, après avoir taper rsync -a en mettant bien un espace entre deux.
Comme nous l'avions vu, il est important de bien mettre le dernier slash du dossier différentiel, afin de ne pas se retrouver avec le dit dossier dans notre collection. Ce qui reviendrait à une simple copie d'un dossier dans l'autre, ce qui est totalement inutile, et ne nécessite pas rsync.
Ainsi l'ensemble des fichiers situés dans la mise à jour se retrouvent dans le romset, y compris les éléments des dossiers CHD et SL, si vous les conservez au même endroit.
Si vous souhaitez avoir plus d'information sur le transfert, vous pouvez agrémenter la commande des paramètres -vh et --progress.
rsync -avh --progress /Chemin/vers/dossier/mise-a-jour/ /Chemin/vers/romsets/MAME
Le paramètre -v détaillera la copie de chacun des fichiers. Tandis que le paramètre --progress indiquera la progression de chacune des copies, utile pour les gros fichiers comme les CHD. Enfin, le paramètre -h demandera à ce que les valeurs affichées dans le "progress" soit lisibles par un humain, utilisant les K(ilo), M(ega), G(iga), au lieu de la valeur en octets.
Ce n'est pas plus compliqué que cela.