J'utilise rsync pour sauvegarder un référentiel qui contient de nombreux fichiers gz, dont de nombreux nouveaux chaque jour. La sauvegarde rsync se déroule plus lentement qu'elle ne le devrait car ces fichiers gz ne sont pas construits avec l'option --rsyncable de gzip (ce qui rend les fichiers gz beaucoup plus «conviviaux pour rsync» sans augmenter significativement leur taille ou affecter leur compatibilité). Et je ne peux pas résoudre le problème au moment de la création car les fichiers sont générés par un script python (rdiff-backup) qui utilise le module gzip de python et cela ne prend pas en charge un équivalent de --rsyncable de gzip.
Donc, avant d'exécuter rsync, je peux identifier tout nouveau fichier gz dans les données source (c'est-à-dire nouveau depuis la dernière exécution de rsync). Maintenant, je veux «re-gzip» ces fichiers afin qu'ils soient compressés au format rsyncable. Ensuite, je peux exécuter rsync à partir de la source optimisée.
Je pense que cela signifie exécuter chaque fichier via gunzip puis gzip --rsyncable, mais je ne sais pas trop comment le faire d'une manière qui ne risque pas de perdre des données ou des métadonnées. Suggestions reçues avec reconnaissance.
--rsyncable
devrait être de savoir si les fichiers sont modifiés entre les exécutions etrsync
tente d'envoyer les modifications. Les nouveaux fichiers ne se soucient pas s'ils sont synchronisables ou non, car ilsrsync
doivent quand même envoyer toutes les données. Les fichiers sont-ils modifiés entre les exécutions rsync?--rsyncable
.-a
drapeau. De plus, ma version de gzip n'a pas d'--rsyncable
indicateur, mais elle est livrée avec un programme appeléznew
qui pourrait probablement être utilisé pour ce dont vous avez besoin.--rsyncable
n'aiderait pas. J'espérais une ligne de code ou un script court qui déballerait en toute sécurité une archive gz et la reconditionnerait en utilisant--rsyncable
. Mais c'est juste une question académique pour moi maintenant.Réponses:
la source
gunzip | gzip
, vous perdez le nom et l'heure non compressés tels qu'ils sont stockés dans le fichier gz (et vus avecgzip -vNl
)