<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Tech de Gamuza</title>
	<link>https://tech.gamuza.fr/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://tech.gamuza.fr/spip.php?id_mot=13&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>One line pour conna&#238;tre la branche Git des repos dans les sous-dossiers d'un r&#233;pertoire</title>
		<link>https://tech.gamuza.fr/One-line-pour-connaitre-la-branche-Git-des-repos-dans-les-sous-dossiers-d-un.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/One-line-pour-connaitre-la-branche-Git-des-repos-dans-les-sous-dossiers-d-un.html</guid>
		<dc:date>2024-03-29T16:38:48Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>


		<dc:subject>script sh</dc:subject>

		<description>&lt;p&gt;Script bash mono-ligne (&#034;one line&#034;) pour faire un &lt;i&gt;git branch -a&lt;/i&gt; et r&#233;cup&#233;rer uniquement la branche active dans tous les sous-dossiers d'un r&#233;pertoire&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;

/ 
&lt;a href="https://tech.gamuza.fr/+-script-sh-+.html" rel="tag"&gt;script sh&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;on boucle dans les sous-dossiers d'un r&#233;pertoire et on joue un &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;git branch -a&lt;/code&gt; : la branche active est pr&#233;fix&#233;e par une &lt;strong&gt;*&lt;/strong&gt; ce qui permet de n'afficher qu'elle via un &lt;code class='bash spip_code spip_code_inline' dir='ltr'&gt;|grep ...&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ce qui donne donc :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls ./&lt;/code&gt;;do echo &#034;&#034;; echo $i; cd $i; git branch -a |grep '*'; cd ../; done&lt;/textarea&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Myextract : un script pour restaurer un ensemble de dumps MySQL</title>
		<link>https://tech.gamuza.fr/un-script-pour-restaurer-un-ensemble-de-dumps-mysql.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/un-script-pour-restaurer-un-ensemble-de-dumps-mysql.html</guid>
		<dc:date>2015-10-12T14:25:59Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>


		<dc:subject>bash</dc:subject>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>script sh</dc:subject>

		<description>&lt;p&gt;&lt;strong&gt;But du script&lt;/strong&gt; : restaurer un ensemble de dumps MySQL bzipp&#233;s et stock&#233;s dans un r&#233;pertoire en une seule op&#233;ration (utilitaire pour migration de serveur).&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;

/ 
&lt;a href="https://tech.gamuza.fr/+-bash-+.html" rel="tag"&gt;bash&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-mysql-+.html" rel="tag"&gt;MySQL&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-script-sh-+.html" rel="tag"&gt;script sh&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div class='spip_document_59 spip_document spip_documents spip_document_image spip_documents_right spip_document_right'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://tech.gamuza.fr/local/cache-vignettes/L469xH154/liste_dumps2-3a1a0.jpg?1768436110' width='469' height='154' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Le but de ce script est de restaurer un ensemble de sauvegardes MySQL qui sont stock&#233;es au format bzip2 dans un dossier. Chaque fichier d'extension .sql.bz2 porte le nom de la base de donn&#233;es dans laquelle il doit &#234;tre restaur&#233; : par exemple &lt;strong&gt;toto.sql.bz2&lt;/strong&gt; devra &#234;tre restaur&#233; dans la base &lt;strong&gt;toto&lt;/strong&gt;.&lt;br class='autobr' /&gt;
Le chemin du dossier contenant les sauvegardes est pass&#233; en param&#232;tre au script.&lt;br class='autobr' /&gt;
&lt;br style=&#034;clear: both;&#034;/&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='28' class='spip_cadre spip_cadre_block' dir='ltr'&gt;#!/bin/bash # myextract.sh # decompacte un ensemble de dumps MySQL bzipp&#233;s stock&#233;es dans un r&#233;pertoire # le chemin du r&#233;pertoire est pass&#233; en param&#232;tre du script # exemple: myextract.sh /chemin/du/repertoire/des_bzips # configuration # nom et mot de passe de l'utilisateur MySQL USER_MYSQL=toto PASS_MYSQL=&#034;super_secret&#034; for j in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls -1 -r $1&lt;/code&gt;; do LA_BASE=&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo $j |sed s/.sql.bz2//&lt;/code&gt; echo &#034;restauration de $LA_BASE&#034; # si les fichiers de dump ont &#233;t&#233;s g&#233;n&#233;r&#233;s avec l'option -B (cr&#233;ation de la base), # enlever l'option -D $LA_BASE dans la commande suivante bunzip2 -c $1/$j | mysql -u$USER_MYSQL --password=$PASS_MYSQL -D $LA_BASE done&lt;/textarea&gt;
&lt;p&gt;A lancer dans un tmux/screen si le nombre de sauvegardes (ou leur taille) est cons&#233;quent(e).&lt;/p&gt;
&lt;p&gt;Pour la g&#233;n&#233;ration des sauvegardes MySQL sous forme de fichiers bzipp&#233;s voir : &lt;a href='https://tech.gamuza.fr/mydump-un-petit-script-pour-sauvegarder-des-bases-de-donnees-au-format-bzip2.html' class=&#034;spip_in&#034;&gt;Mydump : un petit script pour sauvegarder des bases de donn&#233;es au format bzip2&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Mydump : un petit script pour sauvegarder des bases de donn&#233;es au format bzip2</title>
		<link>https://tech.gamuza.fr/mydump-un-petit-script-pour-sauvegarder-des-bases-de-donnees-au-format-bzip2.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/mydump-un-petit-script-pour-sauvegarder-des-bases-de-donnees-au-format-bzip2.html</guid>
		<dc:date>2015-10-12T13:08:30Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>


		<dc:subject>bash</dc:subject>
		<dc:subject>Linux</dc:subject>
		<dc:subject>MySQL</dc:subject>
		<dc:subject>script sh</dc:subject>

		<description>&lt;p&gt;&lt;strong&gt;But du script&lt;/strong&gt; : r&#233;aliser la sauvegarde de bases de donn&#233;es au format bzip2 (utilitaire pour migration de serveur).&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;

/ 
&lt;a href="https://tech.gamuza.fr/+-bash-+.html" rel="tag"&gt;bash&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-linux-+.html" rel="tag"&gt;Linux&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-mysql-+.html" rel="tag"&gt;MySQL&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-script-sh-+.html" rel="tag"&gt;script sh&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Base :&lt;/h2&gt;
&lt;p&gt;Lorsque l'on administre un serveur web (sous Linux), t&#244;t o&#249; tard on se retrouve confront&#233; &#224; la n&#233;cessit&#233; de faire la sauvegarde d'une ou plusieurs bases de donn&#233;es MySQL. &lt;br class='autobr' /&gt;
Le script suivant permet de minimiser les r&#233;p&#233;titions : il r&#233;alise le dump au format bzip2 de la base de donn&#233;es dont on a pass&#233; le nom en param&#232;tre. Le dossier de destination est configurable dans le script.&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='19' class='spip_cadre spip_cadre_block' dir='ltr'&gt;#!/bin/bash # mydump.sh # script pour dump + bzip2 d'une bdd # le nom de la bdd est pass&#233; en param&#232;tre au script # exemple: ./mydump.sh la_base_a_dumper # configuration # chemin du dossier de stockage des dumps CHEMIN_DUMPS=/home/technique/dumps_sauvegardes # nom et mot de passe de l'utilisateur MySQL USER_MYSQL=toto PASS_MYSQL=&#034;super_secret&#034; # creer la base de donnees: utiliser -B comme parametre echo &#034;dump + gzip de $1 dans $CHEMIN_DUMPS/$1.sql.bz2&#034; mysqldump -u $USER_MYSQL --password=$PASS_MYSQL -B --opt $1 | bzip2 -c -1 &gt; $CHEMIN_DUMPS/$1.sql.bz2&lt;/textarea&gt;
&lt;p&gt;A lancer dans un tmux (ou screen) si vos bases sont grosses et/ou votre connexion ssh peu fiable...&lt;/p&gt;
&lt;p&gt;Pour la restauration d'un ensemble de sauvegardes bzipp&#233;s, voir &lt;a href='https://tech.gamuza.fr/un-script-pour-restaurer-un-ensemble-de-dumps-mysql.html' class=&#034;spip_in&#034;&gt;Myextract : un script pour restaurer un ensemble de dumps MySQL&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Pour aller plus loin :&lt;/h2&gt;
&lt;p&gt;On peut vouloir automatiser un peu plus la sauvegarde en passant un fichier listant toutes les bases &#224; sauver, fichier g&#233;n&#233;r&#233; &#224; partir de la liste des bases pr&#233;sentes sur le serveur.&lt;/p&gt;
&lt;p&gt;Le sc&#233;nario &#034;&#233;volu&#233;&#034; pourrait donc &#234;tre :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; g&#233;n&#233;rer le fichier &lt;strong&gt;liste_bases.txt&lt;/strong&gt; listant toutes les bases : &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;mysql -utoto -p&#034;super_secret&#034; -e 'show databases;' &gt; liste_bases.txt&lt;/textarea&gt;
&lt;p&gt;Le fichier obtenu liste l'ensemble des bases pr&#233;sentes, une par ligne.&lt;/p&gt;
&lt;/li&gt;&lt;li&gt; &#233;diter le fichier et enlever les bases qui ne sont pas &#224; sauvegarder (phpmyadmin, performance_schema, mysql...)&lt;/li&gt;&lt;li&gt; lancer &lt;strong&gt;mydump.sh&lt;/strong&gt; en boucle sur toutes les tables restant dans le fichier &lt;strong&gt;liste_bases.txt&lt;/strong&gt; : &lt;textarea readonly='readonly' cols='40' rows='3' class='spip_cadre spip_cadre_block' dir='ltr'&gt;for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cat liste_bases.txt&lt;/code&gt;;do ./mydump.sh $i;done&lt;/textarea&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>G&#233;n&#233;rer un fichier de commandes SVN et GIT pour l'installation d'un ensemble de plugins &#224; partir de ceux d'un SPIP existant</title>
		<link>https://tech.gamuza.fr/Generer-un-fichier-de-commandes-SVN-et-GIT-pour-l-installation-d-un-ensemble-de.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/Generer-un-fichier-de-commandes-SVN-et-GIT-pour-l-installation-d-un-ensemble-de.html</guid>
		<dc:date>2015-09-28T22:54:26Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>


		<dc:subject>Debian</dc:subject>
		<dc:subject>bash</dc:subject>
		<dc:subject>svn</dc:subject>
		<dc:subject>script sh</dc:subject>

		<description>&lt;p&gt;&lt;strong&gt;But du script&lt;/strong&gt; : &#224; partir du r&#233;pertoire des plugins d'un SPIP existant, g&#233;n&#233;rer un script sh qui permet l'installation (par svn checkout... et git clone...) des m&#234;me plugins dans un autre SPIP.&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;

/ 
&lt;a href="https://tech.gamuza.fr/+-debian-+.html" rel="tag"&gt;Debian&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-bash-+.html" rel="tag"&gt;bash&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-svn-+.html" rel="tag"&gt;svn&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-script-sh-+.html" rel="tag"&gt;script sh&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Pour le d&#233;tail de la construction de la commande sed (qui est le truc compliqu&#233; de l'affaire...) voir : &lt;br class='autobr' /&gt;
&lt;a href=&#034;http://www.commentcamarche.net/faq/9558-sed-introduction-a-sed-part-iii#effacement-d-une-ligne-et-insertion-plus-loin&#034; class=&#034;spip_url spip_out&#034; rel=&#034;external&#034;&gt;http://www.commentcamarche.net/faq/...&lt;/a&gt;&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='33' class='spip_cadre spip_cadre_block' dir='ltr'&gt;#!/bin/bash # # G&#233;n&#232;re un sh avec les &#034;git clone&#034; de tous les plugins d'un SPIP # # chaque ligne du fichier g&#233;n&#233;r&#233;e est de la forme: # git clone https://github.com/nom_repo/nom_plugin.git nom_plugin # # ce fichier sera lanc&#233; dans le rep plugins/ d'un SPIP # # chemin du r&#233;pertoire des plugins du SPIP REP_PLUGINS=./ # chemin du fichier sh &#224; cr&#233;er FICHIER_SH=./dupliquer_plugins.sh # initialiser le fichier echo &#034;# commandes des plugins a installer&#034; &gt; $FICHIER_SH for i in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls $REP_PLUGINS&lt;/code&gt;; do if [ -d $REP_PLUGINS/$i/.git ]; then grep &#034;url&#034; $REP_PLUGINS/$i/.git/config |sed 's/.*url = /git clone /;s/.*\/\([^\/]*\).git$/\0 \1/' &gt;&gt;&gt; fi done # passer le fichier sh en executable chmod +x $FICHIER_SH&lt;/textarea&gt;
&lt;p&gt;Une fois ce script lanc&#233; en &#233;tant dans le sous dossier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;plugins&lt;/code&gt;, on r&#233;cup&#232;re le fichier &lt;strong&gt;dupliquer_plugins.sh&lt;/strong&gt; g&#233;n&#233;r&#233; dont le contenu ressemblera &#224; :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='10' class='spip_cadre spip_cadre_block' dir='ltr'&gt;svn co svn://zone.spip.org/spip-zone/_plugins_/acces_restreint/trunk acces_restreint svn co svn://zone.spip.org/spip-zone/_plugins_/adaptive_images/trunk adaptive_images git clone https://github.com/nursit/home.git home svn co svn://zone.spip.org/spip-zone/_plugins_/agenda/trunk agenda svn co svn://zone.spip.org/spip-zone/_plugins_/alias alias git clone https://github.com/nursit/bank.git bank ...&lt;/textarea&gt;
&lt;p&gt;Il ne reste plus qu'a transf&#233;rer ce fichier dans le r&#233;pertoire &lt;strong&gt;plugins/&lt;/strong&gt; du nouveau SPIP, et le lancer en ligne de commande pour avoir les m&#234;mes plugins install&#233;s.&lt;br class='autobr' /&gt;
On peut &#233;galement d&#233;cider de supprimer un certain nombre de lignes correspondantes aux plugins que l'on ne souhaite pas installer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TODO :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; ajouter la r&#233;cup&#233;ration de la branch git en cours : cf &lt;a href=&#034;https://stackoverflow.com/a/11868440&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://stackoverflow.com/a/11868440&lt;/a&gt; &lt;textarea readonly='readonly' cols='40' rows='3' class='spip_cadre spip_cadre_block' dir='ltr'&gt;git rev-parse --abbrev-ref HEAD ou git status | head -1&lt;/textarea&gt;
&lt;p&gt;et int&#233;grer l'appel de branche dans le git clone :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;git clone --branche xxxx url&lt;/textarea&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Alternative si vos plugins ne sont pas install&#233;s en ligne de commande :&lt;/strong&gt;&lt;br class='autobr' /&gt;
voir l'astuce d'Eliaz blog : &lt;a href=&#034;https://www.weblog.eliaz.fr/article118.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Migrer facilement ses plugins d'un SPIP &#224; un autre&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Sortir un fichier texte avec la liste de toutes les URLs des d&#233;pots SVN des plugins d'un SPIP</title>
		<link>https://tech.gamuza.fr/sortir-un-fichier-texte-avec-la-liste-de-toutes-les-urls-des-depots-svn-des-plugins-d-un-spip.html</link>
		<guid isPermaLink="true">https://tech.gamuza.fr/sortir-un-fichier-texte-avec-la-liste-de-toutes-les-urls-des-depots-svn-des-plugins-d-un-spip.html</guid>
		<dc:date>2015-09-26T17:08:34Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>clem</dc:creator>


		<dc:subject>Debian</dc:subject>
		<dc:subject>bash</dc:subject>
		<dc:subject>svn</dc:subject>
		<dc:subject>script sh</dc:subject>

		<description>&lt;p&gt;&lt;strong&gt;But du script :&lt;/strong&gt; r&#233;cup&#233;rer dans un fichier texte la totalit&#233; des URLs des d&#233;pots SVN d'un SPIP. Cette liste pourra &#234;tre utilis&#233;e pour automatiser l'installation du m&#234;me stock de plugins dans un autre SPIP.&lt;/p&gt;

-
&lt;a href="https://tech.gamuza.fr/-scripts-et-commandes-sh-.html" rel="directory"&gt;Scripts sh&lt;/a&gt;

/ 
&lt;a href="https://tech.gamuza.fr/+-debian-+.html" rel="tag"&gt;Debian&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-bash-+.html" rel="tag"&gt;bash&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-svn-+.html" rel="tag"&gt;svn&lt;/a&gt;, 
&lt;a href="https://tech.gamuza.fr/+-script-sh-+.html" rel="tag"&gt;script sh&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;textarea readonly='readonly' cols='40' rows='14' class='spip_cadre spip_cadre_block' dir='ltr'&gt;#!/bin/bash
#
# r&#233;cup&#233;rer un txt avec les URL SVN de tous les plugins du r&#233;pertoire plugins/ d'un SPIP
# # chemin du r&#233;pertoire des plugins du SPIP
REP_PLUGINS=/var/www/ma-mutu.tld/plugins # chemin du fichier txt &#224; cr&#233;er
FICHIER_TXT=/home/clem/liste_urls_svn_plugins.txt svn info $REP_PLUGINS/* |grep &#034;^URL&#034; &gt; $FICHIER_TXT&lt;/textarea&gt;
&lt;p&gt;On peut aller plus loin dans l'automatisation du transfert d'un ensemble de plugins install&#233;s avec SVN en g&#233;n&#233;rant directement le fichier sh de checkout &#224; partir de ce svn info : voir &lt;a href='https://tech.gamuza.fr/Generer-un-fichier-de-commandes-SVN-et-GIT-pour-l-installation-d-un-ensemble-de.html' class=&#034;spip_in&#034;&gt;G&#233;n&#233;rer un fichier de commandes SVN et GIT pour l'installation d'un ensemble de plugins &#224; partir de ceux d'un SPIP existant&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
