26 août 2006
Tar : archiver/sauvegarder vos données
Tar était une commande très utilisée sous unix avant l'apparation de logiciels de sauvegarde. Pour la petite histoire tar signifie Tape Archive. L'avantage de la commande tar est qu'elle préserve les propriétaires et permissions du système de fichiers et qu'elle peut être couplée très facilement avec des outils de compression.
1. Pour créer une archive
- Archive sans compression :
tar -cvf [nom du fichier].tar [nom du répertoire à archiver]
Exemple :
$tar -cvf doc.tar ./doc/
/doc
./doc/essai.txt
./doc/essai1.txt
./doc/essai2.txt
./doc/essai3.txt
- Archive avec compression gzip :
tar -czf [nom du fichier].tgz [nom du répertoire à archiver]
Exemple :
$tar -czf doc2.tgz ./doc
- Archive avec compression bzip2 : tar -cjf [nom du fichier].tbz2 [nom du répertoire à archiver]
2. Pour lire/contrôler une archive
- lire une archive simple
$tar -tvf [nom du fichier].tar
Exemple :
$tar -tvf doc.tar
drwxr-xr-x tagger/tagger 0 2006-08-26 14:34:20 ./doc/
-rw-r--r-- tagger/tagger 0 2006-08-26 14:33:54 ./doc/essai.txt
-rw-r--r-- tagger/tagger 0 2006-08-26 14:34:06 ./doc/essai1.txt
-rw-r--r-- tagger/tagger 0 2006-08-26 14:34:12 ./doc/essai2.txt
-rw-r--r-- tagger/tagger 0 2006-08-26 14:34:20 ./doc/essai3.txt
-lire une archive compressée avec gzip :
$tar -tzf [nom du fichier].tgz
-lire une archive compressée avec bzip2 :
$tar -tjf [nom du fichier].tbz2
3. Pour installer/désarchiver une archive
- Désarchiver une archive sans compression :
tar -xvf [nom du fichier].tar [destination]
Exemple :
Ici on désarchive le contenu de doc.tar dans le répertoire exemple
$tar -xvf doc.tar ./exemple
/doc
./doc/essai.txt
./doc/essai1.txt
./doc/essai2.txt
./doc/essai3.txt
- Désarchiver une archive avec compression gzip :
tar -xzf [nom du fichier].tgz [destination]
Exemple :
$tar -czf doc2.tgz ./exmple
- Désarchiver une archive avec compression bzip2 : tar -xjf [nom du fichier].tbz2 [destination]
4. Archiver / désarchiver à la volée (utile lors d'un file system full)
4.1 Ici on se place dans le répertoire source
tar cvf - [nom du répertoire source à archiver] | (cd [destination] ; tar xvf - .)
Exemple :
$tar cvf - ./doc | (cd /films ; tar xvf - .)
Le répertoire ./doc a été archivé puis nous allons dans le répertoire de destination /films et nous désarchivons
4.2 Ici on se place dans le répertoire de destination
$tar cvf - -C [source] [nom du répertoire à archiver] | tar xvf -
Exemple :
$cd /films
$tar cvf - -C /home/toto doc | tar xvf -
Dans un premier temps nous allons dans le répertoire /films
Enuiste,
avec la commande tar, nous allons dans le répertoire /home/toto/ avec
l'option -C puis nous archivons le répertoire doc, que nous
désarchivons ensuite dans /films.
Enfin il existe plusieurs options pour la commande tar et je vous invite à en lire le man.
13 août 2006
Récupérer un fichier supprimé ... c'est possible
Il peut arriver par inadvertance que vous supprimiez un fichier. Il y a un moyen simple de retrouver le contenu de celui-ci en utilisant tout bêtement la commande grep :
Voici la syntaxe :
grep -a -B<taille avant> -A<taille après> 'texte' /dev/<votre_partition>
Il faut être root.
Voici un exemple :
Vous avez supprimé un fichier dont vous savez
qu'il contient le mot farret_serveur. Vous voulez récupérer les 100
lignes précédent ce mot et les 200 lignes qui suivent ce mot. Ce
fichier se trouvait sur la partition /dev/hd9.
#grep -a -B100 -A200 'farret_serveur' /dev/hda9
Pour en savoir plus http://recover.sourceforge.net/
08 janvier 2006
La commande find
<p><p><p><p>Configuration des serveurs NT – TSE sur site</p></p></p></p>
1. Nom
find - Rechercher des fichiers dans une hiérarchie de répertoires.
2. description
find parcourt les arborescences de répertoires commençant en chacun des chemins mentionnés, en évaluant les expressions fournies pour chaque fichier rencontré.
3. Expressions
L'expression est constituée
d'options (affectant l'ensemble des opérations plutôt
que le traitement d'un fichier particulier, et renvoyant toujours
vrai), de tests (renvoyant une valeur vraie ou fausse), et
d'actions (ayant des effets de bords et renvoyant une valeur
vraie ou fausse), tous ces éléments étant
séparés par des opérateurs.
Quand un opérateur est manquant, l'opération par défaut -and est appliquée. Si l'expression ne contient pas d'action autre que -prune, find applique l'action -print par défaut sur tous les fichiers pour lesquels l'expression est vraie.
4. Options
L'expression est constituée
d'options (affectant l'ensemble des opérations plutôt
que le traitement d'un fichier particulier, et renvoyant toujours
vrai), de tests (renvoyant une valeur vraie ou fausse), et
d'actions (ayant des effets de bords et renvoyant une valeur
vraie ou fausse), tous ces éléments étant
séparés par des opérateurs.
Les options principales du find :
-xdev : ne pas parcourir les répertoires situés sur d'autres systèmes de fichiers. Cette option est très intéressante pour rechercher sur un file system.
5. Tests
Les arguments numériques peuvent
être indiqués comme suit:
+n : supérieur à n,
-n : inférieur à n,
n : égal à n.
-atime n : dernier accès au fichier exactement n jours auparavant. Exemple : -atime -2 Ayant subi un accès depuis avant-hier
-ctime n : derniere modification du statut du fichier il y a n*24 heures.
-mtime n : fichier modifié exactement n jours auparavant. Exemple : -mtime +7 Inchangés depuis 7 jours au moins
-name motif : Fichier dont le nom de base (sans les répertoires du chemin d'accès), correspond au motif du shell. Les méta-caractères (`*', `?', et `[]') ne sont jamais mis en correspondance avec un point `.' au début du nom. Pour ignorer un répertoire, ainsi que tous ses sous-répertoires, utiliser l'option -prune; vous trouverez un exemple dans la description de l'option -path.
-perm mode : Fichier dont les autorisations d'accès sont fixées exactement au mode indiqué (en notation symbolique ou octale). La notation symbolique utilise le mode 0 comme point de départ.
-perm -mode : Fichier ayant au moins toutes les autorisations indiquées dans le mode.
-perm +mode : Fichier ayant certaines des autorisations indiquées dans le mode.
-size n[bckw] : Fichier utilisant n unités d'espace. Les unités sont des blocs de 512 octets par défaut (ou si un suffixe `b' suit le nombre n), des octets si un suffixe `c' suit n, des kilo-octets si un suffixe `k' est utilisé, ou des mots de 2 octets si un `w' suit le nombre n. La taille ne prend pas en compte les blocs indirects, mais elle comptabilise les blocs des fichiers éparpillés pas encore alloués. Exemple : -size +100 De taille supérieur à 50K ( +1000 > 500ko +2000 > 1MO)
-type c
Fichier du type c:
b : fichier spécial en mode bloc (avec buffer)
c : fichier spécial en mode caractère (sans buffer)
d : répertoire
p : tube nommé (FIFO)
f : fichier régulier
l : liens symbolique
s : socket
-user utilisateur : fichier appartenant à l'utilisateur indiqué (UID numérique éventuellement)
6. Actions
-exec commande ; :
Exécute la commande; vrai si le code de retour 0 est
renvoyé. Tous les arguments suivants de find sont
considérés comme des arguments pour la ligne de
commande, jusqu'à ce qu'on rencontre un `;'. La chaîne
`{}' est remplacée par le nom du fichier en cours de
traitement, et ceci dans toutes ses occurences, pas seulement aux
endroits où elle est isolée, comme c'est le cas avec
d'autres versions de find. Ces deux chaînes peuvent
avoir besoin d'être protégées du développement
de la ligne de commande par le shell, en utilisant le caractère
d'échappement (`\') ou une protection par des apostrophes. La
commande est exécutée depuis le répertoire de
départ.
-ok commande ; : comme -exec mais interroge d'abord l'utilisateur (en utilisant l'entrée standard). Si la réponse ne commence pas par `y' ou `Y', la commande n'est pas exécutée, et le test devient faux.
7. exemples
Tout ces exemples ont été réalisés sur un serveur AIX et non linux ...
#df -k
Syst. fichiers Blocs 1024 Libre %Util Iutil %Iutil Monté sur
/dev/hd4 24576 9276 63% 1455 24% /
/dev/hd2 303104 63716 79% 11370 16% /usr
/dev/hd9var 176128 164312 7% 289 1% /var
/dev/hd3 16384 15748 4% 40 1% /tmp
/dev/hd1 24576 23408 5% 87 2% /home
/dev/lv07 16384 3668 78% 497 13% /outil
Soit le répertoire /tmp avec les fichiers suivants :
#ls -ltr
total 56
drwx------ 2 root system 512 19 fév 1997 lost+found
drwxrwxr-x 8 root system 512 23 fév 1997 bos
drwxr-xr-x 2 root system 512 24 fév 1997 etc
drwxr-xr-x 3 root system 512 09 mar 1999 vgdata
drwxr-xr-x 2 root system 512 25 oct 2000 chcormer
-rw-r--r-- 1 root system 0 02 nov 14:31 titi
-rw-r--r-- 1 root system 0 02 nov 14:54 tata
-rw-r--r-- 1 root system 6851 02 nov 16:18 toto
exercice 1 : rechercher tous les fichiers dans le file system /tmp seulement ayant été modifiés il y a moins de 24 heures
#find /tmp -xdev -mtime -1 -type f
/tmp/titi
/tmp/toto
/tmp/tata
exercice 2 : rechercher les fichiers toto ou titi sur le file system /tmp
#find /tmp -xdev \( -name toto -o -name titi \)
/tmp/titi
/tmp/toto
exercice 3 : faire une suppression de fichier avec demande de confirmation avec l'option exec et ok
Nous voulons supprimer tous les fichiers dont le nom commence par toto et qui sont situés sous /tmp.
#find /tmp -xdev -name "toto*" -type f -exec rm -i {} \;
rm: Voulez-vous supprimer /tmp/toto? O
Autre syntaxe possible avec l'option -ok :
#find /tmp -xdev -name "toto*" -type f -ok rm {} \;
exercice 4 : rechercher les fichiers modifiés depuis 24 heures avec l'option mtime , les visualiser puis les supprimer après confirmation
#find /tmp -xdev -mtime -1 -type f -exec ls -l {} \; -exec rm -i {} \;
-rw-r--r-- 1 root system 0 02 nov 14:31 /tmp/titi
rm: Voulez-vous supprimer /tmp/titi? o
-rw-r--r-- 1 root system 6851 02 nov 16:18 /tmp/toto
rm: Voulez-vous supprimer /tmp/toto? o
-rw-r--r-- 1 root system 0 02 nov 14:54 /tmp/tata
rm: Voulez-vous supprimer /tmp/tata? o
exercice 5 : rechercher un fichier de plus de 1 MO via l'option size
#find /tmp -xdev -size +2000 -type f -exec ls -l {} \;
-rw-r--r-- 1 root system 1091846 02 nov 17:37 /tmp/toto
exercice 6 : rechercher tous les fichiers sous un fs en excluant les fichiers log, core et dmp
#find /logiciels/RIF-AB/re7100 -type f ! \( -name "*.log" -o -name "core" -o -name "*.dmp" \) -exec ls {} \;
18 décembre 2005
stat : affichage des informations sur un fichier ou système de fichiers
La commande stat permet d'afficher un certain nombre d'information sur un fichier ou sur un système de fichier (dans ce cas avec le paramètre -f).
Voici la syntaxe de base pour un fichier : stat mon_fichier
Et celle pour un système de fichier : stat -f mon_fs
Exemples :
$ stat /etc/passwd
File: `/etc/passwd'
Size: 1269 Blocks:
4 IO Block: 4096
fichier régulier
Device: 301h/769d Inode: 32317 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2005-12-18 20:48:56.000000000 +0100
Modify: 2005-10-27 18:35:19.000000000 +0200
Change: 2005-10-27 18:35:19.000000000 +0200
$ stat /dev/hda5
File: `/dev/hda5'
Size: 0
Blocks: 0 IO Block:
4096 fichier spécial de bloc
Device: 301h/769d Inode: 68339 Links: 1 Device type: 3,5
Access: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 6/ disk)
Access: 2005-02-26 07:38:26.000000000 +0100
Modify: 2005-02-26 07:38:26.000000000 +0100
Change: 2005-09-20 17:15:12.000000000 +0200
$ stat -f /home
File: "/home"
ID: 0 Namelen: 255 Type: ext2/ext3
Blocks: Total: 2403529 Free: 2112568 Available: 1990475 Size: 4096
Inodes: Total: 1221600 Free: 1211354
30 novembre 2005
Tout savoir sur votre matériel et votre configuration
(Documentation très inspirée du très excellent site lea-linux)
1. Informations concernant le matériel
Informations exhaustives sur la configuration matérielle : lshw
lshw est un petit outil pour extraire les informations détaillées de la configuration matérielle de votre machine dixit le man :-)
S'il n'est pas sur votre machine, installez-le :
# apt-get install lshw
Pour voir sa configuration, faites la commande suivante :
# lshw
Pour avoir sa configuration formatée dans un fichier Hteumeuleu (ce qui est plus propre) :
# lshw -html > lshw.html
2. Informations sur votre configuration
Lister les bibliothèques : ldconfig
Pour lister les bibliothèques qui se trouvent sous /usr/lib, /lib et dans le fichier /etc/ld.so.conf
# ldconfig -p | more
Pour rechercher une librairie :
# ldconfig -p | grep -i ma_librairie