Recherche de fichiers : commande find
Compression de fichiers : Commandes de compression et de décompression de fichiers: compress,uncompress,zcat, gzip, gunzip, bzip2 et bunzip2
Archivage de fichiers: cpio
Combinaison des commandes find, cpio et bzip2
Archivage de fichiers à la GNU : tar
Importance de la commande :
UNIX permet de gérer un très grand nombre de fichiers et il n'est pas toujours facile de trouver celui dont on a besoin.
De l'anglais find, cette commande permet de localiser facilement un fichier. Elle recherche les fichiers remplissant certaines conditions, en commençant par le répertoire indiqué ou le répertoire courant. La recherche se fait de façon récursive dans tous les sous-répertoires. Les conditions peuvent porter sur le nom ou le type du fichier, le propriétaire, la date de création ou de modification. Tout fichier trouvé est traité par les options de commande fournies.
Syntaxe :
find Répertoire_de_départ [Critères] [Options de commande]
Principaux critères utilisables :
Critère |
Signification |
-name Fichier |
Recherche par nom de fichier. Caractère * utilisable |
-type Type |
Recherche par type de fichier : Type = f (fichier normal), d (répertoire), c (fichier de périphérique orienté caractère), b (fichier de périphérique orienté bloc), p (Tube nommé ou FIFO). |
-user Nom |
Recherche par propriétaire |
-group Nom |
Recherche par groupe |
-size Nombre |
Recherche par taille en blocs (par défaut) ou en octets |
-atime Jour |
Recherche par date de dernier accès en lecture (Jour en nombre de jours) |
-mtime Jour |
Recherche par date de dernière modification (Jour en nombre de jours) |
-ctime Jour |
Recherche par date de création (Jour en nombre de jours) |
-perm Droits |
Recherche par droits d'accès |
-links Nombre |
Recherche par nombre de références |
Remarques :
Les nombres et date peuvent être précédés par les signes : + (supérieur à), - (inférieur à).
On peut combiner les critères avec des opérateurs logiques :
critère1 critère2 ou critère1 -a critère2 correspond au et logique ;
! critère correspond au non logique ;
(critère1 -o critère2 ) correspond au ou logioque.
Principales options de commande
Option |
Signification |
|
Demande que le résultat de la commande doit être affiché à l'écran |
-exec command {} ; |
Applique la commande spécifiée aux fichiers trouvés sans dialogue. Remarquer l'espace entre l'accolade fermante et l'ant-slash ; de même que l'absence d'espace entre l'anti-slash et le point virgule |
-ok command {} ; |
Applique la commande spécifiée aux fichiers trouvés avec demande de confirmation. Mêmes remarques. |
Exemples :
$ find . -mtime -3 -print
Dans cet exemple, on cherche à affiche à affiche tous les fichiers dont les dernières modifications remontent à moins de 3 jours à partir du répertoire courant.
$ find /usr -type f -size 5210c -print
Dans cet exemple on recherche tous les fichiers ayant une taille exacte de 5120 caractères en commençant par le répertoire /usr
$ find . -type f -size +200k -print
Dans cet exemple on recherche tous les fichiers ayant une taille supérieure à 200 Ko.
$ find . -name abra -print
$ find . -name '[A-Z]*' -print
Remarquez ici la nécessité des doubles quotes lorsqu'il s'agit d'utiliser des métacaractères.
$ find . -ok rm {} ;
Vous avez là un exemple avec option de commande. Il s'agit de supprimer tous les fichiers qui seront trouvés, avec demande de confirmation à l'utilisateur.
$ find / -type f -user olivier -perm 755 -print
C'est un exemple de recherche combinée.
En tant que simple utilisateur, vous n'avez pas forcément le droit d'accès à un certain nombre de répertoires. Par conséquent, la commande find peut générer beaucoup de messages d'erreur du genre permission refusée, qui pourraient noyer l'information utile. Pour éviter cela, il est possible de rediriger les messages d'erreur dans un fichier poubelle (comme /dev/null). Dans le cas de /dev/null, les messages d'erreur sont perdus.
Exemple : $ find /usr -type f -name pingouin 2>| /dev/null
Un fonction intéressante de find est de pouvoir être utilisé avec d'autres commandes Unix/Linux comme dans l'exemple ci-après :
$ find /usr -type f -print | xargs grep pingouin 2>| /dev/null
Dans cet exemple, nous recherchons dans le réperttoire /usr tous les fichiers normaux (sans les répertoires et autres fichiers spéciaux) et dans ces fichiers tous ceux qui contiennent la chaîne pingouin.
La commande compress permet de réduire la taille des fichiers spécifiés en utilisant le codage adaptatif de Lempel-Ziv. Si la réduction est possible, chaque fichier est remplacé par un nouveau fichier de même nom avec une extension .Z pour indiquer qu'il s'agit désormais d'un fichier compressé (compacté). Et tous les attributs du fichier original sont préservés. Si aucun fichier n'est spécifié ou si '-' est spécifié, l'entrée standard est compressée sur la sortie standard.
La commande uncompress restitue les fichiers compressés dans leur état original (c'est-à-dire les décompressé). Les fichiers résultats ont les nom, propriétaire et droits d'accès originaux et l'extension .Z est enlevé. Si aucun fichier n'est spécifié ou si '-' est spécifié, l'entrée standard est compressée sur la sortie standard.
La commande zcat restitue les fichiers compressés dans leur état original (c'est-à-dire les décompresse) et envoie le résultat sur la sortie standard (comportement non-destructif. Si aucun fichier n'est spécifié ou si '-' est spécifié, l'entrée standard est compressée sur la sortie standard.
Sur HP-UX 10.20, les deux premières commandes ont une variante permettant de compresser/décompresser un répertoire et tous ses sous-répertoires : compressdir/uncompressdir
Syntaxes :
compress [-d] [-f|-z] [-z] [-v] [-c] [-V] [Fichier ...]
uncompress [-f] [-v] [-c] [-V] [Fichier ...]
zcat [-V] [Fichier ...]
compressdir [options][Répertoire ...]
uncompressdir [options][Répertoire ...]
Les options les plus courantes :
Option |
Signification |
-d |
Décompresse le fichier. compress -d est équivalent à uncompress |
-f |
Force la compression même si le fichier est vide. Sans cette option, un dialogue a lieu pour chaque fichier vide. Utile pour compressdir. |
-z |
Ne force pas la compression des fichiers vides. Utile pour compressdir. |
-v |
Affiche un message donnant le pourcentage de réduction de chaque fichier compressé. |
-c |
Force compress et uncompress à écrire sur la sortie standard ; aucun fichier n'est changé. uncompress -c <==> zcat |
-V |
Affiche la version courante et les options de compilation sur le canal standard d'erreur. |
Exemples :
$ compress -v Fessai
Fessai : Compression : 23.55% -- replaced with Fessai.Z
$ uncompress Fessai.Z
$ compress -f Fessai
$ compress -d Fessai.Z
$ uncompress -c arch.tar.Z | tar -tvf -
Projet GNU de la Free Software Foundation de l'université de Cambridge, Massachussetts.
Description : (un programme efficace distribué dans le cadre du projet GNU)
La fonction de base de la commande gzip consiste à prendre un fichier, le compresser, sauvegarder la version compactée sous la forme
Si aucun fichier n'est spécifié, gzip tentera de compresser les données arrivant sur l'entrée standard. De même l'option -c de gunzip permet d'écrire les données décompactées sur la sortie standard.
zcat est souvent identique à gunzip -c.
Syntaxe :
gzip [-l] [Fichier]
gunzip [-c] [-N] [Fichier]
Quelques options :
Option |
Signification |
-l |
Permet d'obtenir des informations sur un fichier compressé. |
-c |
Force l'écriture des résultats sur la sortie standard |
-N |
Force l'utilisation du nom du fichier original. |
Exemples :
$ gzip bidules.txt
$ ls -l
$ mv bidules.txt.gz machin.txt.gz
$ ls -l
$ gunzip -N machin.txt.gz
$ ls -l
$ ls -laR $HOME | gzip > liste.gz
$ gunzip -c liste.gz |more
Description :
bzip2 compacte des fichiers en utilisant l'algorithme de réduction de texte par tri de blocs de Burrows-Wheeler, et le codage d'Huffman. La réduction est généralement nettement meilleure que celle atteinte par des compacteurs plus conventionnels basés sur LZ77/LZ78, et approche les performances de la famille des compacteurs statistiques PPM.
Les options de ligne de commandes sont délibérément très similaires à celles de GNU gzip, mais elles ne sont pas identiques.
bzip2 attend une liste de noms de fichiers pour accompagner les options de ligne de commandes.
Chaque fichier est remplacé par une version compactée de lui-même, avec le nom « nom_original.bz2 ».
bzip2 et bunzip2, n'écraseront par défaut pas les fichiers existants. Si vous voulez que cela se produise, utilisez l'option -f.
Syntaxe :
bzip2 [-cdztkqv] [noms_fichiers]
bunzip2 [-fkvs] [noms_fichiers]
Quelques options importantes
Options |
Signification |
-c |
Compacter ou décompacter sur la sortie standard |
-d |
Forcer la décompression. Equivalent à bunzip2. |
-z |
Forcer la compression |
-t |
Vérifier l'intégrité des fichiers spécifiés |
-k |
Garder (ne pas effacer) les fichiers d'entrée durant la compression ou la décompression. |
-q |
Supprimer les messages d'avertissement non essentiels. Ceux se rapportant aux erreurs d'E/S et à d'autres événements critiques ne sont pas supprimés. |
-v |
Mode verbeux. Montre le coefficient de compression pour chaque fichier traité. |
Sauvegarde de masse : Commande cpio
Description : De l'anglais copy input output, cette commande copie une entrée sur une sortie en archivant tout au passage.
Elle prend l'entrée standard comme source de la liste des fichiers à copier et la sortie standard comme destination de l'archive.
Par tube, on peut diriger la sortie des commandes ls ou find vers cpio
Une archive au format cpio est composée de la concaténation du contenu des fichiers qui ont servi à la créer.
Syntaxe :
cpio -o [v]
cpio -i [dfmrtuv]] [motifs]
cpio -p [dmmruv] catalogue
Les options -o -i et -p déterminent lopération à réaliser
Option et arguments |
Signification ou effet |
-o |
Ecriture sur la sortie standard des fichiers dont la liste est donnée sur lentrée standard avec un nom de fichier par ligne |
-i |
Extraction de fichiers à partir de lentrée standard. largument motif permet une sélection à laide des métacaractères du shell (*, ?, etc.) |
-p |
Recopie dune liste de fichiers fournie à partir de lentrée standard sur un catalogue. Cette option permet de recopier des arborescences lorsquelle est utilisée avec la commande find. |
-d |
Les répertoires sont créés si nécessaire. |
-f |
Ne recopie pas les fichiers dont les noms ne correspondent pas aux motifs donnés. |
-m |
Les fichiers archivés conservent la date de dernière modification du fichier source lors de leur extraction. |
-r |
Permet de renommer les fichiers de manière interactive. Si Entrée sans un nom de fichier, ce dernier nest pas restauré. |
-t |
Donne la liste des fichiers présents dans larchive. |
-u |
Cette option force une copie inconditionnelle. Si cette option nest pas présente, un fichier existant nest pas écrasé par une copie provenant de larchive si celle-ci est antérieure. |
-v |
Liste les noms de fichiers soumis à lopération Conjointement avec t, elle donne des informations supplémentaires similaires à ls -l. |
Exemples :
$ ls | cpio -o > /dev/floppy
$ find . -depth -print | cpio -o > /dev/rmt0
Dans cet exemple, on sauvegarde le contenu du répertoire courant avec les souss-répertoires.
$ cd /etc./mail
$ ls |cpio -o > /tmp/f.cpio
Ici on sauvegarde le répertoire courant.
$ mkdir /tmp/test; cd /tmp/test
$ cpio -id < /tmp/f.cpio
Ici on restaure le répertoire courant.
Exemples commentés de combinaison de find, cpio et bzip2
$ cd /
$ find etc -depth -xdev -print | cpio -o 2>> /var/log/sauvegarde.log | bzip2 -c > /opt/etc.cpio.bz2
Dans cet exemple, on récupère tous les noms de fichiers du répetoire /etc et de ses sous-répertoires, en traitant d'abord les sous-répertoires avant le répertoire lui-même (option -depth) mais en ignorant les sous-répertoires situés sur d'autres systèmes de fichiers (option -xdev). Ensuite une archive est constituée qui est, à son tour compressée et sauvegardée dans le fichier /opt/etc.cpio.bz2. Pendant le traitement les éventuels messages d'erreur sont envoyés dans le fichier /var/log/sauvegarde.log. Si on ne souhaite pas analyser ces messages après coup, on aurait pu procéder à la redirection vers le fichier-puits de données sans fond /dev/null.
La commande cd / précédent le traitement proprement dit assure d'avoir dans l'archive des noms relatifs de fichiers commençant par etc du genre etc/sysconfig/network.
Si on avait fait « find /etc -depth ... » l'archive aurait enregistré des noms absolus.
$ cd /
$ bzip2 -dc /opt/etc.cpio.bz2 | cpio -uid 2>>/var/log/install.log
On restaure l'archive qui a été constitué ci-dessus et on envoie les éventuels messages d'erreur dans le fichier /var/log/install.log. On aurait pu les envoyer vers /dev/null.
Description :
De l'anglais tape archive, cette commande permet d'assembler de nombreux fichiers en une seule archive, tout en conservant tous les attributs des fichiers (date, permissions, propriétaires)
Si la commande reconnaît parmi ses paramètres un nom de répertoire, celui-ci est sauvegardé avec tous ses sous-répertoires et ses fichiers de manière récursive.
Syntaxe : tar
Les valeurs possibles de
|
Signification |
-c |
De l'anglais Create, pour créer une nouvelle archive |
-x |
De l'anglais extract, pour extraire des fichiers d'une archive |
-t |
De l'anglais table of content, pour afficher le contenu d'une archive |
-r |
Pour rajouter des fichiers à une archive |
-u |
De l'anglais update, pour remplacer les anciens fichiers par leurs nouvelles versions. |
Les valeurs possibles de
Signification |
|
-v |
De l'anglais verbose, pour avoir plus d'informations lors de l'archivage ou de l'extraction |
-k |
De l'anglais keep, pour conserver tout fichier existant avant l'extraction (pas d'écrasement (pas universelle). |
-f |
De l'anglais file, pour indiquer le nom du fichier d'archive à lire ou à écrire. |
|
|
Exemples :
$ tar -cf. mt.tar mt
Dans cet exemple, on archive le répertoire mt. Attention à la position de l'option f. Elle doit, si elle est utilisée, être toujours la dernière et le nom de fichier qui la suit doit être le nom de l'archive.
Il supporte en plus la compression/décompression avec l'option -z, avec la syntaxe suivante :
tar cvzf
Nous vous conseillons fortement de dire les pages des manuels des différentes commandes étudiées dans ce dossier. Vous y trouverez beaucoup d'autres informations ou des options spécifiques qui peuvent servir dans certaines circonstances particulières.