Outils pour utilisateurs

Outils du site


linux:exemple_alias

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:exemple_alias [2017/08/18 21:55]
pascal
linux:exemple_alias [2017/08/19 13:21] (Version actuelle)
pascal [Partie 3 : snapshot switch (NetApp)]
Ligne 51: Ligne 51:
  
 ==== Partie 2 : arch. switch ==== ==== Partie 2 : arch. switch ====
 +
 +Petite explications sur la signification des codes :
 +| win | A | 061 |
 +| OS | architecture | version |
 +
 +| code | signification |
 +| winX051 | Windows XP 32bit |
 +| winA052 | Windows XP 64bit |
 +| winA061 | Windows 7 64bit |
 +| rheA060 | Red Hat Enterprise Linux 6.0 64bit |
  
 Ces alias facilitent la navigation entre des répertoires qui ont la même structure.\\ Ces alias facilitent la navigation entre des répertoires qui ont la même structure.\\
Ligne 90: Ligne 100:
  
 Agissent comme une bascule : //prod// permet de passer de //test// vers //prod// et inversement pour //test//.\\ Agissent comme une bascule : //prod// permet de passer de //test// vers //prod// et inversement pour //test//.\\
-Pour naviguer de ''/data/winA052/prod/soft1'' vers ''/data/winA052/test/soft1'' la commande ''cd ../../test/soft1'' ici est remplacée par l'alias ''test''.+Pour naviguer de ''/data/winA052/__prod__/soft1'' vers ''/data/winA052/__test__/soft1'' la commande ''cd ../../test/soft1'' ici est remplacée par l'alias ''test''.
  
 <code bash> <code bash>
Ligne 101: Ligne 111:
 </code> </code>
  
-//sed// remplace **prod** par **test** dans le répertoire courant (//pwd//)si ce répertoire existe on fait un //cd// pour s'y rendre.\\+  * //sed// remplace "prodpar "testdans le répertoire courant (//pwd//)\\ 
 +  * **si** ce répertoire existe **alors** on fait un //cd// pour s'y rendre.
  
 === ALIAS winX051, winA052, winA061, rheA060 === === ALIAS winX051, winA052, winA061, rheA060 ===
  
-Petite explications sur la signification de ces codes:\\ +Si on veut passer de ''/data/__winA061__/prod/soft2/V1'' vers ''/data/__rheA060__/prod/soft2/V1'' l'alias ''rheA060'' remplacera ''cd ../../../../rheA060/prod/soft2/V1''.
-  * win -> Windows +
-  * rhe -> Red Hat Enterprise Linux +
-  * X -> architecture x86 (32bit) +
-  * A -> architecture AMD64 (64bit) +
-  * 051 -> version de l'OS +
-winX051 correspond donc à Windows XP 32bit, winA052 Windows XP 64bit, winA061 Windows 7 64bit, rheA060 Red Hat Enterprise Linux v6.x +
- +
-Si on veut passer de ''/data/winA061/prod/soft2/V1'' vers ''/data/rheA060/prod/soft2/V1'' l'alias ''rheA060'' remplacera ''cd ../../../../rheA060/prod/soft2/V1''.+
  
 <code bash> <code bash>
Ligne 129: Ligne 132:
 fi' fi'
 </code> </code>
-on recherche les différentes architectures winX051; winA052, ...\\ + 
-si on trouve quelque chose on remplace l'architecture par rheA060\\ +  * //grep// recherche le code de l'architecture (winA061, ...) dans le répertoire courant (//pwd//)\\ 
-si le répertoire existe on s'y rend\\ +  * **si** //grep// a trouvé quelque chose **alors** //sed// remplace le code d'architecture par rheA060\\ 
-si on a rien trouvé au premier test on se rend directement dans ''/data/rheA060/prod''.+  * **si** le répertoire existe on s'y rend avec //cd//\\ 
 +  si rien a été trouvé par //grep// au premier test on se rend directement dans ''/data/rheA060/prod''. 
 + 
 +==== Partie 3 : snapshot switch (NetApp) ==== 
 + 
 +Ces alias permettent de naviguer entre les snapshots.\\ 
 +Les snapshots étant à la racine des volumes et les volumes tous montés dans le même répertoire alors le dossier .snapshot sera donc toujours en troisième position ''/mnt/vol1/.snapshot/nightly.0/folders''
 + 
 +=== ALIAS snapin, snapout === 
 + 
 +Permet d'entrer / sortir des snapshots, le principe est le même que les précédents alias. 
 + 
 +== Illustration d'utilisation == 
 + 
 +<code bash> 
 +$ pwd 
 +/mnt/voldata1/projets/ABC123/test/archive 
 +$ snapin 
 +$ pwd 
 +/mnt/voldata1/.snapshot/hourly.0/projets/ABC123/test/archive 
 +</code> 
 + 
 +=== ALIAS hourly, nightly, weekly === 
 + 
 +Même principe, on navigue entre les snapshots hourly, nightly et weekly. 
 + 
 +== Illustration d'utilisation == 
 + 
 +<code bash> 
 +$ pwd 
 +/mnt/voldata1/.snapshot/hourly.0/projets/ABC123/test/archive 
 +$ nightly 
 +$ pwd 
 +/mnt/voldata1/.snapshot/nightly.0/projets/ABC123/test/archive 
 +</code> 
 + 
 +=== ALIAS snap+, snap- === 
 + 
 +Toujours la même chose, on navigue en incrémentant ou décrémentant le snapshot dans lequel on est. 
 + 
 +== Illustration d'utilisation == 
 + 
 +<code bash> 
 +$ pwd 
 +/mnt/voldata1/.snapshot/nightly.0/projets/ABC123/test/archive 
 +$ snap+ 
 +$ pwd 
 +/mnt/voldata1/.snapshot/nightly.1/projets/ABC123/test/archive 
 +</code> 
 + 
 +=== Mise en situation === 
 + 
 +Le but est de retrouver dans les snapshots un fichier qui a été effacé et qui se nomme "fichier_effacé.txt" 
 + 
 +== Les commandes sans l'utilisation des alias == 
 + 
 +<code bash> 
 +$ pwd 
 +/mnt/voldata1/projets/ABC123/test 
 +$ cd ../../../.snapshot 
 +$ ls 
 +hourly.0 hourly.1 hourly.2 hourly.3 hourly.4 nightly.0 nightly.1 nightly.2 
 +$ cd nightly.0/projets/ABC123/test 
 +$ ls 
 +fichier.txt 
 +$ cd ../../../../nightly.1/projets/ABC123/test 
 +$ ls 
 +fichier.txt fichier_effacé.txt 
 +$ cp fichier_effacé.txt /mnt/voldata1/projets/ABC123/test/ 
 +$ cd /mnt/voldata1/projets/ABC123/test/ 
 +</code> 
 + 
 +== La commande avec l'alias == 
 + 
 +<code bash> 
 +$ pwd 
 +/mnt/voldata1/projets/ABC123/test 
 +$ snapin 
 +$ pwd 
 +/mnt/voldata1/.snapshot/hourly.0/projets/ABC123/test 
 +$ nightly 
 +$ pwd 
 +/mnt/voldata1/.snapshot/nightly.0/projets/ABC123/test 
 +$ ls 
 +fichier.txt 
 +$ snap+ 
 +$ pwd 
 +/mnt/voldata1/.snapshot/nightly.1/projets/ABC123/test 
 +$ ls 
 +fichier.txt fichier_effacé.txt 
 +$ cp fichier_effacé.txt /mnt/voldata1/projets/ABC123/test/ 
 +$ snapout 
 +$ pwd 
 +/mnt/voldata1/projets/ABC123/test 
 +</code> 
 + 
 +== Explications des alias == 
 + 
 +<code bash> 
 +alias snapin=' 
 +pwd | grep -qe "/\.snapshot/\(hour\|night\|week\)ly\.[0-9]"; 
 +if [ $? -ne 0 ]; 
 +then 
 +  s1=`pwd | cut -d/ -f-3`; 
 +  s3=`pwd | cut -d/ -f4-`; 
 +  dir="$s1/.snapshot/hourly.0/$s3"; 
 +  if [ -d "$dir" ]; 
 +  then 
 +    cd "$dir"; 
 +  fi; 
 +fi' 
 +</code> 
 + 
 +  * //grep// recherche par expressions régulières '/.snapshot/hourly.#' ou '/.snapshot/nightly.#' ou '/.snapshot/weekly.#' dans le répertoire courant (//pwd// ''/mnt/voldata1/projets/ABC123/test'').\\ 
 +  * **si** //grep// n'a rien trouvé **alors**\\ 
 +  * //cut// découpe le répertoire courant en prenant le caractère '/' comme séparateur et ne garde que les 3 premiers champs (''/mnt/voldata1'') pour les stocker dans la chaîne 's1'.\\ 
 +  * //cut// découpe le répertoire courant en prenant le caractère '/' comme séparateur et ne garde que les champs 4 et supérieurs (''projets/ABC123/test'') pour les stocker dans la chaîne 's3'.\\. 
 +  * on crée une chaîne de caractère 'dir' dans laquelle on met 's1' + '/.snapshot/hourly.0/' + 's3'\\ 
 +  * **si** ce dossier existe **alors** on s'y rend avec //cd//. 
 + 
 +<code bash> 
 +alias nightly=' 
 +pwd | grep -qe "/\.snapshot/\(hour\|week\)ly\.[0-9]/"; 
 +if [ $? -eq 0 ]; 
 +then 
 +  dir=`pwd | sed "s#/\(hour\|week\)ly.[0-9]#/nightly.0#"`; 
 +  if [ -d "$dir" ]; 
 +  then 
 +    cd "$dir"; 
 +  fi; 
 +fi' 
 +</code> 
 + 
 +  * //grep// recherche avec une expression régulière "/.snapshot/hourly.#" ou "/.snapshot/weekly.#" dans le répertoire courant '//pwd//). 
 +  * **si** quelque chose est trouvé **alors** //sed// remplace "hourly.#" ou "weekly.#" par "nightly.0" dans le répertoire courant (//pwd//) et met le résultat dans la chaîne "dir"
 +  * **si** ce répertoire existe **alors** on s'y rend avec un //cd//. 
 + 
 +<code bash> 
 +alias snap+=' 
 +[[ `pwd` =~ (.*\.snapshot/(hour|night|week)ly\.)([0-9])(.*$) ]] && 
 +    dir="${BASH_REMATCH[1]}$((BASH_REMATCH[3] + 1))${BASH_REMATCH[4]}"; 
 +if [ -d "$dir" ]; 
 +then 
 +  cd "$dir"; 
 +fi' 
 +</code> 
 + 
 +  * **si** //bash// trouve dans le répertoire courant (//pwd//) ".snapshot/hourly.#" ou ".snapshot/nightly.#" ou ".snapshot/weekly.#" 
 +    * //bash// numérote ses variables en suivant les parenthèses ouvrantes dans l'expression régulière\\ ''**<color #ed1c24>(</color>**.*\.snapshot/**<color #ed1c24>(</color>**hour|night|week)ly\.)**<color #ed1c24>(</color>**[0-9])**<color #ed1c24>(</color>**.*$)'' 
 +  * **et** on crée une chaîne avec ce que //bash// a trouvé 
 +    * '<color #00a2e8>${ }</color>' sert à délimiter les variables et '<color #22b14c>$( )</color>' sert à exécuter une commande.\\ ''<color #00a2e8>${</color>BASH_REMATCH[1]<color #00a2e8>}</color><color #22b14c>$(</color> (BASH_REMATCH[3] + 1) <color #22b14c>)</color><color #00a2e8>${</color>BASH_REMATCH[4]<color #00a2e8>}</color>'' 
 +    * ''<color #00a2e8>${</color>BASH_REMATCH[1]<color #00a2e8>}</color>'' = ''(.*\.snapshot/(hour|night|week)ly\.)'' = "/mnt/voldata1/.snapshot/nightly." 
 +    * ''BASH_REMATCH[3]'' = ''([0-9])'' = "0" 
 +    * ''<color #22b14c>$(</color> (BASH_REMATCH[3] + 1) <color #22b14c>)</color>'' = 0 + 1 = "1" 
 +    * ''<color #00a2e8>${</color>BASH_REMATCH[4]<color #00a2e8>}</color>'' = ''(.*$)'' = "/projets/ABC123/test" 
 +  * **si** le répertoire créé avec la chaîne "dir" existe **alors** on s'y rend avec un //cd//. 
linux/exemple_alias.1503086129.txt.gz · Dernière modification: 2017/08/18 21:55 de pascal