<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Latest snippets tagged bash linux</title>
  <link rel="alternate" href="http://snippets.prendreuncafe.com/snippets/tagged/bash+linux/order_by/date"></link>
  <id>http://snippets.prendreuncafe.com/snippets/tagged/bash+linux/order_by/date</id>
  <updated>2008-03-22T15:59:50Z</updated>
  <author>
    <name>Symfony</name>
    <author_email>noreply@symfony-project.com</author_email>
  </author>
<entry>
  <title>Comparer les différences entre deux répertoires</title>
  <link href="http://snippets.prendreuncafe.com/snippet/80"></link>
  <updated>2008-03-22T15:59:50Z</updated>
  <id>80</id>
  <summary type="html">C'est tout con, mais encore faut-il le savoir :)

[code]
$ diff -rq rep1/ rep2/
[/code]</summary>
</entry>
<entry>
  <title>Dump de toutes les bases d'un serveur MySQL dans des fichiers multiples</title>
  <link href="http://snippets.prendreuncafe.com/snippet/67"></link>
  <updated>2007-04-26T18:49:13Z</updated>
  <id>67</id>
  <summary type="html">Si comme moi vous avez sous la main un serveur abritant plusieurs (dizaines, voir centaines de) bases de données, le jour où une des bases de données plante et qu'on vous demande de la restaurer, je vous souhaite bien du courage si vous n'avez qu'un résultat de mysqldump --all-databases sous la main. 

Afin de pallier ce problème, j'ai écris ce script bash qui vous facilitera bien la vie !

Au programme : 

 * sauvegarde des dump de chaque base dans des fichiers séparés compressés en gzip, eux même situés dans un dossier nommé en fonction de la date

 * suppression automatique du dump effectué il y a 7 jours.

Le script est destiné à être exécuté par un cron, par exemple toutes les nuits.

[code]
#!/bin/bash

#paramètres de configuration du script
#completer ici par le nom d'un utilisateur autorisé à dumper toutes vos bases :
strMysqlUser=&quot;&quot; 
#completer ici par le mot de passe de cet utilisateur :
strPassword=&quot;&quot; 
# completer ici par le chemin vers le repertoire de travail où va se trouver le dump
# il est possible de préfixer le répertoire  :
# &quot;/rep/de/travail/prefix_&quot; donnera alors /rep/de/travail/prefix_20070505
repTravail=&quot;&quot; 


#mémorisation de la date du jour et de la date d'il y a 7 jours
dateActuelle=$(date +%Y%m%d)
datePassee=$(date --date '7 days ago' +%Y%m%d)

#Suppression de la sauvegarde d'il y a 7 jours
echo &quot;[&quot;$(date +%F\ %X)&quot;] Suppression des dump du &quot;$datePassee
repTravailPasse=$repTravail$datePassee
rm -R $repTravailPasse

# début du dump
echo &quot;[&quot;$(date +%F\ %X)&quot;] Dump du : &quot;$dateActuelle
repTravailActuel=$repTravail$dateActuelle
mkdir $repTravailActuel
# récupération de la liste des bdd, &quot;tail -n +2&quot; est présent pour ne pas récupérer le titre &quot;Databases&quot; renvoyé par mysql
listDatabase=$(mysql --user=$strMysqlUser --password=$strPassword --exec=&quot;SHOW DATABASES;&quot; |  tail -n +2)

#dump de chaque base dans un fichier
for lineDatabase in $listDatabase
do
    echo &quot;[&quot;$(date +%F\ %X)&quot;] Debut du dump de la base &quot;$lineDatabase&quot; vers &quot;$repTravailActuel
    mysqldump --user=&quot;$strMysqlUser&quot; --password=&quot;$strPassword&quot; &quot;$lineDatabase&quot; | gzip &gt; &quot;$repTravailActuel&quot;/&quot;$lineDatabase&quot;.sql.gz
    echo &quot;[&quot;$(date +%F\ %X)&quot;] Dump compressé dans &quot;$repTravailActuel&quot;/&quot;$lineDatabase&quot;.sql.gz&quot;
done
echo &quot;[&quot;$(date +%F\ %X)&quot;] Fin de la sauvegarde&quot;
exit 0
 
[/code]</summary>
</entry>
<entry>
  <title>Raccourcis pour changer de bash rapidement</title>
  <link href="http://snippets.prendreuncafe.com/snippet/65"></link>
  <updated>2007-04-10T14:50:49Z</updated>
  <id>65</id>
  <summary type="html">Beaucoup de monde connait le ctrl+alt+FX (X allant de 1 à 6 pour les sessions de terminal, et au dessus pour les sessions graphiques)

Je viens de découvrir par hasard le alt+super pour passer rapidement à la console suivante. (super étant assigné à la touche windows sur les claviers prévus pour fonctionner avec les systèmes de Microsoft)

</summary>
</entry>
<entry>
  <title>Rendre l'execution d'un programme insensible aux déconnexions</title>
  <link href="http://snippets.prendreuncafe.com/snippet/62"></link>
  <updated>2007-03-15T15:09:10Z</updated>
  <id>62</id>
  <summary type="html">On peut utiliser l'utilitaire `nohup` :

[code]
$ nohup batch_script.sh
[/code]

`CTRL+Z` + `bg` mettront la tâche en arrière plan.

</summary>
</entry>
<entry>
  <title>Effacer les fichiers trop volumineux</title>
  <link href="http://snippets.prendreuncafe.com/snippet/38"></link>
  <updated>2007-01-11T14:09:52Z</updated>
  <id>38</id>
  <summary type="html">Find est un outil magnifiquement simple et puissant. Par exemple, pour supprimer tous les fichiers de plus de 500Kb dans le répertoire courant :

[code]
$ find . -type f -size +500 | xargs rm
[/code]</summary>
</entry>
<entry>
  <title>Turn on Bash Smart Completion</title>
  <link href="http://snippets.prendreuncafe.com/snippet/37"></link>
  <updated>2007-01-11T13:07:14Z</updated>
  <id>37</id>
  <summary type="html">Just edit /etc/bash.bashrc

Uncomment the following lines, by removing the # in the beginning of the lines:

[code]
#if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi
[/code]

Now, resource the modified file : 
[code]
$ source /etc/bash.bashrc
[/code]

Then try to tape apt-cache [TAB][TAB]

You will have this result in replacement of the habitual list of files and directories of your current path : 
[code]
$ apt-cache
add        dotty      dumpavail  pkgnames   rdepends   show       showsrc    unmet
depends    dump       gencaches  policy     search     showpkg    stats      xvcg
[/code]

It works with a lot of functions like cd (it will provide only directories), apt-get,...

It also enable code completion when using the sudo command.

Isn't it useful ?

Nota : The tip I give here is to activate Smart Completion for all users. If you want to activate it for only one user (or if you want to activate it but doesn't have write rights to /etc/bash.bashrc) you can modify your ~/.bashrc file and uncomment the same lines as described upper and resource it with 
[code]
$ source ~/.bashrc
[/code]</summary>
</entry>
<entry>
  <title>Trouver le nombre de slots mémoires disponibles/occupés sous Linux</title>
  <link href="http://snippets.prendreuncafe.com/snippet/4"></link>
  <updated>2006-10-26T11:43:04Z</updated>
  <id>4</id>
  <summary type="html">Sous linux :

[code]
$ dmidecode | grep -i &quot;size&quot;
[/code]

Ce qui renvoie un truc du genre :

[code]
Size: 512 MB
Size: 512 MB
Size: No Module Installed
Size: No Module Installed
Size: No Module Installed
Size: No Module Installed
[/code]

Donc là on a 6 slots occupés par deux barrettes de 512Mo.</summary>
</entry>
</feed>