Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1910 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Logiciels

  [TNZ Tools] Fabrication d'archive TAR (AMK)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[TNZ Tools] Fabrication d'archive TAR (AMK)

n°1469068
TNZ
Ryzen 9 5950X powered ...
Posté le 20-10-2021 à 15:54:02  profilanswer
 

Bonjour

 

Cet outil est un interpréteur de commandes tournant autour de la fabrication d'archives TAR. Il permet  de générer une archive complète ou partielle par contrôle checksum. Toutes ces opérations sont pilotées par un fichier de description de la structure de l'archive. Cette description sert à toutes les commandes de l'outil.

 

L'intérêt principal de cet outil est de séparer l'aspect « fonctionnel » de l'aspect « technique » lors de la fabrication d'archives TAR. Par expérience sur des projets d'édition / intégration, on claque toute la soupe dans un script sans séparer le fonctionnel du technique. Hors dans la vie d'un projet, l'aspect fonctionnel évolue au fil des versions du logiciel développé et par conséquent le script qui fabrique l'archive. Quand tout est mélangé, souvent, seul le développeur du script est en mesure de le mettre à jour pour peu qu'il est dû utiliser des « astuces » de structure applicative ou système. Bref, en séparant les 2 aspects : 1. on ne touche plus à la partie technique et 2. on facilite la maintenance « fonctionnelle » en la mettant à portée de personnes qui se sont pas forcément des cadors sur les archives TAR.

 

Un autre aspect issu du terrain, souvent les clients demandent à ne livrer que les fichiers modifiés parce que des archives en mode Full commence à coûter en espace disque et en bande passante pour les livraisons. Du coup, en combinant la gestion checksum avec la fabrication d'archive, on dispose d'un outil capable de faire une archive incrémentale par rapport à une référence checksum. Mais, allez vous me dire, les développeurs peuvent donner cette liste de fichiers modifiés ... ben, pas tout le temps. Au mieux, on a la liste des sources qui ont été recompilés. Du coup, avec le jeu des dépendances (genre un include), on va se retrouver avec toute une tartine de binaires qui ont été regénérés. Bref, la signature checksum devient le juge de paix dans l'exercice incrémental.

 

Dépôt github : https://github.com/TNZfr/amk
Soit vous passez par un « git pull » ou vous passez par une installation manuelle :

  • Récupérer l'archive tar.gz depuis Github
  • Extraire depuis le $HOME avec un « tar xfz amk*.tar.gz »


Utilisation
AMK dispose d'une aide en ligne fournie sur manque de paramètres ... pas besoin d'avoir 3 volumes encyclopédiques de documentation conçue pour ne pas être lue :D
Dans un terminal, la couleur est utilisée pour améliorer la lisibilité.

~$ amk

 

Syntax  : amk Command Parameters ...

 

Tool management
---------------
Infos      (I): Display informations on a basket file
FullInfos (FI): Display informations on a basket file
ListDelta (LD): List delta between basket and checksum list

 

Package Generation
------------------
Generate         (GEN): Generate TGZ archive from basket file
GenerateFileList (GFL): Generate file list of selected basket
GenerateCheckSum (GCS): Generate checksum of target files from basket
BuildDelta        (BD): Build delta between basket and checksum list

 


Entre parenthèses, se trouve la forme courte de la commande. Les commandes ne sont pas sensibles à la casse.

 

       LES CONCEPTS

 

AMK effectue ses traitements à partir d'un fichier décrivant la structure de l'archive à fabriquer. Ce fichier est appelé « Panier ». Un exemple est disponible sur la page GitHub : amk2.0.pnr

 

Le format du fichier est :

ROOT    RépertoireRacine
ADD     Pattern/NomDeFichier
EXCLUDE Pattern/NomDeFichier
PURGE   Pattern/NomDeFichier


Les clauses descriptives peuvent être nombreuses sauf la clause ROOT où seule la dernière est prise en compte.
Toutes les autres lignes du panier qui ne commencent pas par une des clauses décrites au dessus sont considérées comme des commentaires. Ceci permet de soigner la présentation du panier afin d'en assurer une maintenance facile.

 

Clause ROOT
Définit la racine de l'arborescence à partir de laquelle les autres clauses vont être appliquées.

 

Clause ADD
Définit un ou plusieurs fichiers ou pattern de fichiers à ajouter à l'archive.
Il faut garder en tête que la commande tar au final va prendre en compte toute l’arborescence quand on lui donne un répertoire.  

 

Clause EXCLUDE
Définit un ou plusieurs fichiers ou pattern de fichiers à IGNORER.
Il faut garder en tête que la commande tar au final va prendre en compte toute l’arborescence quand on lui donne un répertoire.  

 

Clause PURGE
Définit un ou plusieurs fichiers ou pattern de fichiers à SUPPRIMER avant d'appliquer les autres clauses.
Cette clause sert surtout à nettoyer les répertoires de développement pour éviter de devoir ajouter des clauses EXCLUDE en pagaille.  

 

Clause MODULE
La syntaxe dans le fichier Panier;

MODULE Repertoire/Script [[Parametre 1] ...]


Cette clause appelle le script donné en paramètre depuis le répertoire de la clause ROOT (appels relatifs possibles).
L'appel du script se fait de la façon suivante :

Repertoire/Script RacineArchive [[Parametre 1] ...]

 

Petite limitation : Les patterns et les noms de fichiers des clauses NE DOIVENT PAS contenir d'espace dans les noms (dans le panier et sur le FS).

 

       LES COMMANDES


amk infos Panier
Cette commande fournit un « rapport » de ce qu'il va être pris en compte pour la construction de l'archive.
En gros, elle sert à mettre au point le panier.

 

amk fullinfos Panier ou amk infos Panier FULL
Même chose mais avec la liste des fichiers.
Pour des archives avec une dizaine de fichiers, il y a peu de différences. Mais quand on tape à quelques centaines voire milliers de fichiers, la pertinence d'informations plus synthétiques s'impose.

 

amk listdelta Panier FichierChecksum
On effectue une passe de contrôle de cksum entre les fichiers définis dans le panier et on les compare aux signatures ckecksum fournies. Tous les fichiers nouveaux ou modifiés seront considérés comme éligible pour une archive incrémentale.

 

amk generate Panier Archive
Fabrique une archive contenant l'ensemble des fichiers « décrits » dans le panier.
Sur le GitHub AMK, vous trouverez le jeu de fichiers générés par la commande Generate.

 

amk generatefilelist Panier FichierListe
Fabrique un fichier contenant la liste des fichiers « décrits » dans le panier. Cela équivaut à un « tar tvf »

 

amk generatechecksum Panier FichierChecksum
Fabrique un fichier contenant les checksums des fichiers « décrits » dans le panier.

 

amk builddelta Panier FichierChecksum Archive
On effectue une passe de contrôle de cksum entre les fichiers définis dans le panier et on les compare aux signatures ckecksum fournies. Tous les fichiers nouveaux ou modifiés seront utilisés pour fabriquer l'archive incrémentale.
Un fichier contenant la liste des fichiers composant l'archive est généré ainsi qu'un second fichier contenant les checksum des fichiers composant l'archive.


Message édité par TNZ le 21-10-2021 à 11:55:38

---------------
"Mieux vaut demander à un qui sait plutôt qu'à deux qui cherchent." ... "Le plus dur, c'est de faire simple.", TNZ
mood
Publicité
Posté le 20-10-2021 à 15:54:02  profilanswer
 

n°1469069
TNZ
Ryzen 9 5950X powered ...
Posté le 20-10-2021 à 15:54:17  profilanswer
 

Changelog AMK

 


AMK 2.0

  • Migration des scripts de KSH vers BASH



AMK 2.1

  • Intégration de la clause MODULE dans les paniers (paniers dynamiques)


L'idée derrière ce mécanisme est de proposer de lancer des scripts externes générant les clauses ADD, EXCLUDE et PURGE de manière dynamique en fonction de critères laissés au choix de l'utilisateur.
Sur la page Git, j'ai laissé un exemple de script appelé (amk_module.sh) associé au panier qui l'utilise (amk2.1.pnr).

 

amk2.1.pnr

ROOT   $HOME
MODULE ./amk_module.sh 2.1

 

La syntaxe d'utilisation de la clause MODULE est la suivante :

MODULE Repertoire/Script [[Parametre 1] ...]

 

amk_module.sh

Code :
  1. #!/bin/bash
  2. # Parametres recus
  3. # - Racine archive (clause ROOT)
  4. # - Parametres definis dans le panier
  5. Racine=$1
  6. Version=$2
  7. rm $HOME/bin/amk
  8. ln -s amk$Version/Main.sh $HOME/bin/amk
  9. echo "ADD bin/amk"
  10. echo "ADD bin/amk$Version"
  11. echo "PURGE bin/amk$Version/*~"
 

Seules les lignes « affichées » par le script commençant par ADD, EXCLUDE et PURGE sont prises en compte.

 

Note importante : la clause ROOT doit être déclarée dans le fichier Panier. En effet, celle-ci est évaluée en premier afin de se positionner à la racine. Il est possible de référencer les scripts MODULE en relatif par rapport à la racine.

 


Message édité par TNZ le 21-10-2021 à 11:49:52

---------------
"Mieux vaut demander à un qui sait plutôt qu'à deux qui cherchent." ... "Le plus dur, c'est de faire simple.", TNZ
n°1469070
TNZ
Ryzen 9 5950X powered ...
Posté le 20-10-2021 à 15:54:24  profilanswer
 

Infos diverses

 

1h30 après le 1er post, déjà 12 clones git du projet :D
13 clones git à 17h45 :ouch:


Message édité par TNZ le 20-10-2021 à 17:43:14

---------------
"Mieux vaut demander à un qui sait plutôt qu'à deux qui cherchent." ... "Le plus dur, c'est de faire simple.", TNZ
n°1469123
TNZ
Ryzen 9 5950X powered ...
Posté le 21-10-2021 à 11:48:32  profilanswer
 

AMK 2.1 out !
Changelog dans le 2nd post
:)


---------------
"Mieux vaut demander à un qui sait plutôt qu'à deux qui cherchent." ... "Le plus dur, c'est de faire simple.", TNZ

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Logiciels

  [TNZ Tools] Fabrication d'archive TAR (AMK)

 

Sujets relatifs
[TNZ Tools] Gestion kernel pour Debian, Redhat & ARCH Linux (KRN)Restaurer un system à partir archive
Checksum de l'intérieur d'une archive ?modifier fichier dans archive cpio
mercurial(=hg) : le repertoire /var/hg-tools n'existe pasArchive vide de 107 Mo
Hp tools qu'est ce que c'est? Linux à la place?Protégrer un TAR ou un GZ par un mot de passe ?
Plus de sujets relatifs à : [TNZ Tools] Fabrication d'archive TAR (AMK)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR