Linux Professional Institute Learning Logo.
Passer au contenu principal
  • Accueil
    • Toutes les ressources
    • Supports de Cours LPI
    • Devenez contributeur
    • Publishing Partners
    • Devenez Partenaire de Publication
    • À propos
    • FAQ
    • Contributeurs
    • Feuille de route
    • Contactez-nous
  • LPI.org
103.3 Leçon 2
Thème 101 : Architecture système
101.1 Détermination et configuration des paramètres du matériel
  • 101.1 Leçon 1
101.2 Démarrage du système
  • 101.2 Leçon 1
101.3 Change runlevels / boot targets and shutdown or reboot system
  • 101.3 Leçon 1
Thème 102 : Installation de Linux et gestion de paquetages
102.1 Conception du schéma de partitionnement
  • 102.1 Leçon 1
102.2 Installation d'un gestionnaire d'amorçage
  • 102.2 Leçon 1
102.3 Gestion des bibliothèques partagées
  • 102.3 Leçon 1
102.4 Utilisation du gestionnaire de paquetage Debian
  • 102.4 Leçon 1
102.5 Utilisation des gestionnaires de paquetage RPM et YUM
  • 102.5 Leçon 1
102.6 Linux en tant que système virtuel hébergé
  • 102.6 Leçon 1
Thème 103 : Commandes GNU et Unix
103.1 Travail en ligne de commande
  • 103.1 Leçon 1
  • 103.1 Leçon 2
103.2 Traitement de flux de type texte avec des filtres
  • 103.2 Leçon 1
103.3 Gestion élémentaire des fichiers
  • 103.3 Leçon 1
  • 103.3 Leçon 2
103.4 Utilisation des flux, des tubes et des redirections
  • Prochainement...
103.5 Création, contrôle et interruption des processus
  • Prochainement...
103.6 Modification des priorités des processus
  • Prochainement...
103.7 Recherche dans des fichiers texte avec les expressions rationnelles
  • Prochainement...
103.8 Édition de fichier simple
  • Prochainement...
Thème 104 : Disques, systèmes de fichiers Linux , arborescence de fichiers standard (FHS)
104.1 Création des partitions et des systèmes de fichiers
  • Prochainement...
104.2 Maintenance de l'intégrité des systèmes de fichiers
  • Prochainement...
104.3 Montage et démontage des systèmes de fichiers
  • Prochainement...
104.5 Gestion des permissions et de la propriété sur les fichiers
  • Prochainement...
104.6 Création et modification des liens physiques et symboliques sur les fichiers
  • Prochainement...
104.7 Recherche de fichiers et placement des fichiers aux endroits adéquats
  • Prochainement...
How to get certified
  1. Thème 103 : Commandes GNU et Unix
  2. 103.3 Gestion élémentaire des fichiers
  3. 103.3 Leçon 2

103.3 Leçon 2

Certification :

LPIC-1

Version :

5.0

Thème :

103 Commandes GNU et Unix

Objectif :

103.3 Gestion élémentaire des fichiers

Leçon :

2 sur 2

Introduction

Chercher des fichiers

Au fil de l’utilisation de votre machine, les fichiers augmentent progressivement en nombre et en taille. Il peut arriver qu’il soit difficile de localiser un fichier particulier. Heureusement pour nous, Linux fournit find pour rechercher et localiser rapidement les fichiers. find utilise la syntaxe suivante :

find STARTING_PATH OPTIONS EXPRESSION
STARTING_PATH

définit le répertoire où débute la recherche.

OPTIONS

contrôle le déroulement et ajoute des critères spécifiques pour optimiser le processus de recherche.

EXPRESSION

définit la requête de la recherche.

$ find . -name "myfile.txt"
./myfile.txt

Ici, le chemin de départ est le répertoire courant. L’option -name spécifie que la recherche se base sur le nom du fichier. myfile.txt est le nom du fichier à rechercher. Si vous utilisez des caractères de substitution, pensez à mettre l’expression entre guillemets :

$ find /home/frank -name "*.png"
/home/frank/Pictures/logo.png
/home/frank/screenshot.png

Cette commande trouve tous les fichiers dont le nom se termine par .png en partant du répertoire /home/frank/ et en dessous. Si vous ne comprenez pas l’utilisation de l’astérisque (*), elle a été abordée dans la précédente leçon.

Utiliser des critères pour accélérer la recherche

Utilisez find pour localiser des fichiers en fonction du type, de la taille ou du temps. Il suffit de spécifier une ou plusieurs options pour que les résultats escomptés soient obtenus plus rapidement.

Les options pour la recherche de fichiers en fonction du type comprennent :

-type f

recherche de fichiers.

-type d

recherche de répertoires.

-type l

recherche de liens symboliques.

$ find . -type d -name "example"

Cette commande trouve tous les répertoires dans le répertoire courant et en dessous, qui portent le nom example.

Parmi les autres critères utilisables avec find, on peut citer :

-name

effectue une recherche basée sur le nom fourni.

-iname

recherche basée sur le nom et insensible à la casse (c’est-à-dire que la recherche retournera myFile aussi bien que MYFILE).

-not

renvoie les résultats qui ne correspondent pas au terme recherché.

-maxdepth N

recherche dans le répertoire courant ainsi que dans les sous-répertoires de N niveaux de profondeur.

Localiser des fichiers par date de modification

find permet également de passer au peigne fin une arborescence de répertoires en fonction de la date de modification du fichier :

$ sudo find / -name "*.conf" -mtime 7
/etc/logrotate.conf

Cette commande recherche tous les fichiers du système de fichiers (le chemin de départ est le répertoire racine, c’est-à-dire /) dont le nom se termine par les caractères .conf et qui ont été modifiés au cours des sept derniers jours. La commande nécessite des privilèges élevés pour accéder aux répertoires qui commencent à la base de la structure des répertoires du système, d’où l’utilisation de sudo ici. L’argument fourni à mtime représente le nombre de jours depuis la dernière modification du fichier.

Localiser des fichiers par taille

find peut également localiser des fichiers en fonction de leur taille. Par exemple, chercher des fichiers d’une taille supérieure à 2G dans /var :

$ sudo find /var -size +2G
/var/lib/libvirt/images/debian10.qcow2
/var/lib/libvirt/images/rhel8.qcow2

L’option -size affiche les fichiers dont la taille correspond à l’argument fourni. Voici quelques exemples :

-size 100b

fichiers d’une taille de 100 octets exactement.

-size +100k

fichiers de plus de 100 kilooctets.

-size -20M

fichiers de moins de 20 mégaoctets.

-size +2G

fichiers de plus de 2 gigaoctets.

Note

Pour localiser les fichiers vides, nous pouvons utiliser : find . -size 0b ou find . -empty.

Effectuer des opérations sur le résultat de la recherche

Une fois qu’une recherche est terminée, il est possible d’effectuer une action sur les fichiers résultants en utilisant l’option -exec :

$ find . -name "*.conf" -exec chmod 644 '{}' \;

Cette commande analyse tous les objets du répertoire courant (.) ainsi que tous les sous-répertoires à la recherche de fichiers dont le nom se termine par .conf et exécute ensuite la commande chmod 644 pour modifier les permissions des fichiers résultants.

Pour l’instant, ne vous préoccupez pas de la signification de '{}' \; nous l’aborderons un peu plus loin.

Utiliser grep pour rechercher des fichiers en fonction de leur contenu

grep est utilisé pour rechercher l’occurrence d’un mot clé.

Prenons un cas de figure où nous devons rechercher des fichiers en fonction de leur contenu :

$ find . -type f -exec grep "lpi" '{}' \; -print
./.bash_history
Alpine/M
helping/M

Cette commande va rechercher tous les objets dans l’arborescence du répertoire courant (.) qui sont des fichiers (-type f) pour ensuite exécuter la commande grep "lpi" sur chaque fichier qui répond aux critères de recherche. Les fichiers qui remplissent ces conditions sont affichés à l’écran (-print). Les accolades ({}) symbolisent ici les résultats de la recherche find. Les {} sont entourés de guillemets simples (') pour éviter de passer à grep des fichiers dont les noms contiennent des caractères spéciaux. La commande -exec se termine par un point-virgule (;) qui doit être échappé (\;) pour éviter toute interprétation par le shell.

L’ajout de l’option -delete à la fin d’une expression permet de supprimer tous les fichiers correspondants. Cette option doit être utilisée uniquement lorsque vous êtes sûr et certain que les résultats correspondent bien aux fichiers que vous souhaitez supprimer.

Dans l’exemple ci-dessous, find recherche tous les fichiers dans l’arborescence du répertoire courant puis supprime tous ceux dont le nom se termine par les caractères .bak :

$ find . -name "*.bak" -delete

Archiver des fichiers

La commande tar (archivage et compression)

La commande tar, une forme abrégée de “tape archive(r)”, est utilisée pour créer des archives tar en compactant un groupe de fichiers en une archive. Une archive est créée dans le but de faciliter le déplacement ou la sauvegarde d’un groupe de fichiers. Imaginez tar comme un outil qui crée un adhésif sur lequel les fichiers peuvent s’attacher, se regrouper et se déplacer facilement.

tar permet en outre d’extraire une archive tar, d’afficher la liste des fichiers inclus dans l’archive et d’ajouter des fichiers supplémentaires à une archive existante.

Voici la syntaxe de la commande tar :

tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(S)]
OPERATION

Un seul argument opérationnel est autorisé et requis. Les opérations les plus fréquemment utilisées sont :

--create (-c)

Créer une nouvelle archive tar.

--extract (-x)

Extraire une archive dans son intégralité ou un ou plusieurs fichiers de cette archive.

--list (-t)

Afficher la liste des fichiers inclus dans l’archive.

OPTIONS

Voici les options les plus courantes :

--verbose (-v)

Afficher les fichiers en cours de traitement par la commande tar.

--file=archive-name (-f archive-name)

Spécifie le nom du fichier de l’archive.

ARCHIVE_NAME

Le nom de l’archive.

FILE_NAME(S)

La liste des noms de fichiers à extraire, séparés par des espaces. Si elle n’est pas fournie, l’archive est extraite dans son intégralité.

Créer une archive

Admettons que nous ayons un répertoire nommé stuff dans le répertoire courant et que nous voulions le sauvegarder dans un fichier nommé archive.tar. Nous devons invoquer la commande suivante :

$ tar -cvf archive.tar stuff
stuff/
stuff/service.conf

Voici ce que signifient concrètement les options utilisées :

-c

Créer une archive.

-v

Affiche la progression de la création de l’archive dans le terminal, en mode "bavard". Le -v est toujours facultatif dans ces commandes, mais il est tout de même pratique.

-f

Permet de spécifier le nom de fichier de l’archive.

En règle générale, pour archiver un seul répertoire ou un seul fichier sous Linux, on utilise :

tar -cvf NAME-OF-ARCHIVE.tar /PATH/TO/DIRECTORY-OR-FILE
Note

tar fonctionne de manière récursive. Il va effectuer l’action requise sur chaque répertoire subséquent à l’intérieur du répertoire indiqué en argument.

Pour archiver plusieurs répertoires à la fois, il suffit de dresser la liste de tous les répertoires en les délimitant par un espace dans la section /PATH/TO/DIRECTORY-OR-FILE :

$ tar -cvf archive.tar stuff1 stuff2

Cette commande génère une archive de stuff1 et stuff2 dans archive.tar.

Extraire une archive

Nous pouvons extraire une archive à l’aide de tar :

$ tar -xvf archive.tar
stuff/
stuff/service.conf

Cette commande va extraire le contenu de archive.tar vers le répertoire courant.

La commande est la même que celle utilisée pour la création de l’archive ci-dessus, à l’exception de l’option -x qui remplace l’option -c.

Pour extraire le contenu de l’archive vers un répertoire particulier, on utilise l’option -C :

$ tar -xvf archive.tar -C /tmp

Cette commande va extraire le contenu de archive.tar dans le répertoire /tmp.

$ ls /tmp
stuff

La compression avec tar.

La commande GNU tar fournie avec les distributions Linux permet de créer une archive .tar et de la compresser ensuite avec la compression gzip ou bzip2 en une seule et même commande :

$ tar -czvf name-of-archive.tar.gz stuff

Cette commande va créer un fichier compressé en utilisant l’algorithme de compression gzip (-z).

Même si la compression gzip est utilisée le plus souvent pour créer des fichiers .tar.gz ou .tgz, tar supporte également la compression bzip2. Cela permet de créer des fichiers compressés bzip2, souvent nommés .tar.bz2, .tar.bz ou .tbz.

Pour ce faire, nous remplaçons -z pour gzip par -j pour bzip2 :

$ tar -cjvf name-of-archive.tar.bz stuff

Pour décompresser le fichier, il suffit de remplacer -c par -x, sachant que x signifie “extract” :

$ tar -xzvf archive.tar.gz

gzip est plus rapide, mais il compresse généralement un peu moins, vous obtenez donc un fichier un peu plus volumineux. bzip2 est plus lent, mais il compresse un peu plus, de sorte que vous obtenez un fichier un peu plus compact. Mais en règle générale, gzip et bzip2 font pratiquement la même chose et les deux vont fonctionner de manière similaire.

Alternativement, on peut appliquer une compression gzip ou bzip2 en utilisant la commande gzip pour une compression gzip et la commande bzip pour une compression bzip. Par exemple, pour appliquer la compression gzip, invoquez :

gzip FILE-TO-COMPRESS
gzip

crée le fichier compressé du même nom mais avec une extension .gz.

gzip

supprime le fichier original après la création du fichier compressé.

La commande bzip2 fonctionne de manière similaire.

Pour décompresser les fichiers, nous utilisons soit gunzip soit bunzip2 en fonction de l’algorithme utilisé pour la compression.

La commande cpio

cpio signifie “copy in, copy out”. Cette commande est utilisée pour traiter les archives telles que les fichiers *.cpio ou *.tar.

cpio effectue les opérations suivantes :

  • Copier des fichiers vers une archive.

  • Extraire les fichiers d’une archive.

La liste des fichiers est récupérée depuis l’entrée standard (principalement depuis la sortie de ls).

Pour créer une archive cpio, nous allons invoquer :

$ ls | cpio -o > archive.cpio

L’option -o indique à cpio de créer une sortie. Dans cet exemple, le fichier de sortie créé est archive.cpio. La commande ls liste le contenu du répertoire courant qui doit être archivé.

Pour extraire l’archive, nous utilisons :

$ cpio -id < archive.cpio

L’option -i est utilisée pour effectuer l’extraction. L’option -d va créer le répertoire de destination. Le caractère < correspond à l’entrée standard. Le fichier d’entrée à extraire est archive.cpio.

La commande dd

dd copie des données d’un emplacement vers un autre. La syntaxe de dd n’est pas la même que celle de la plupart des programmes Unix, étant donné que la commande utilise la syntaxe option=value pour ses options en ligne de commande plutôt que le format GNU standard -option value ou --option=value :

$ dd if=oldfile of=newfile

Cette commande va copier le contenu de oldfile dans newfile, sachant que if= est le fichier d’entrée (input file) et of= fait référence au fichier de sortie (output file).

Note

En temps normal, la commande dd n’affiche rien à l’écran avant la fin de son exécution. L’option status=progress permet d’afficher la progression des opérations dans la console. Par exemple : dd status=progress if=oldfile of=newfile.

dd est également utilisé pour convertir les données en majuscules/minuscules ou pour écrire directement sur des périphériques bloc comme /dev/sdb :

$ dd if=oldfile of=newfile conv=ucase

Cette commande va copier tout le contenu de oldfile vers newfile en mettant tout le texte en majuscules.

La commande ci-dessous va sauvegarder l’ensemble du disque dur /dev/sda dans un fichier backup.dd :

$ dd if=/dev/sda of=backup.dd bs=4096

Exercices guidés

  1. Considérez le listing suivant :

    $ find /home/frank/Documents/ -type d
    /home/frank/Documents/
    /home/frank/Documents/animal
    /home/frank/Documents/animal/domestic
    /home/frank/Documents/animal/wild
    • Quel genre de fichiers cette commande afficherait-elle ?

    • Dans quel répertoire la recherche doit-elle débuter ?

  2. Un utilisateur veut compresser son répertoire de sauvegarde. Il utilise la commande suivante :

    $ tar cvf /home/frank/backup.tar.gz /home/frank/dir1

    Quelle est l’option qui manque pour compresser la sauvegarde en utilisant l’algorithme gzip ?

Exercices d’approfondissement

  1. Un administrateur système doit effectuer des vérifications régulières dans le but de nettoyer les fichiers volumineux. Ces fichiers volumineux se trouvent dans /var et se terminent par l’extension .backup.

    • Écrivez la commande basée sur find pour localiser ces fichiers :

    • Une analyse de la taille de ces fichiers révèle qu’ils vont de 100M à 1000M. Complétez la commande ci-dessus avec cette nouvelle information afin de pouvoir localiser les fichiers de sauvegarde allant de 100M à 1000M :

    • Enfin, complétez la commande avec une action de suppression pour que ces fichiers soient effacés :

  2. Le répertoire /var contient quatre fichiers de sauvegarde :

    db-jan-2018.backup
    db-feb-2018.backup
    db-march-2018.backup
    db-apr-2018.backup
    • En utilisant tar, spécifiez la commande qui créerait un fichier d’archive nommé db-first-quarter-2018.backup.tar :

    • En utilisant tar, spécifiez la commande qui va créer l’archive et la compresser en utilisant gzip. Notez que le nom du fichier résultant devra se terminer par .gz :

Résumé

Voici ce que nous avons appris dans cette leçon :

  • Trouver des fichiers avec find.

  • Ajouter des critères de recherche basés sur le temps, le type de fichier ou la taille en fournissant des arguments à find.

  • Effectuer des opérations sur les fichiers résultants.

  • Archiver, compresser et décompresser des fichiers en utilisant tar.

  • Traiter des archives avec cpio.

  • Copier des fichiers avec dd.

Réponses aux exercices guidés

  1. Considérez le listing suivant :

    $ find /home/frank/Documents/ -type d
    /home/frank/Documents/
    /home/frank/Documents/animal
    /home/frank/Documents/animal/domestic
    /home/frank/Documents/animal/wild
    • Quel genre de fichiers cette commande afficherait-elle ?

      Des répertoires

    • Dans quel répertoire la recherche doit-elle débuter ?

      /home/frank/Documents

  2. Un utilisateur veut compresser son répertoire de sauvegarde. Il utilise la commande suivante :

    $ tar cvf /home/frank/backup.tar.gz /home/frank/dir1

    Quelle est l’option qui manque pour compresser la sauvegarde en utilisant l’algorithme gzip ?

    L’option -z.

Réponses aux exercices d’approfondissement

  1. Un administrateur système doit effectuer des vérifications régulières dans le but de nettoyer les fichiers volumineux. Ces fichiers volumineux se trouvent dans /var et se terminent par l’extension .backup.

    • Écrivez la commande basée sur find pour localiser ces fichiers :

      $ find /var -name *.backup
    • Une analyse de la taille de ces fichiers révèle qu’ils vont de 100M à 1G. Complétez la commande ci-dessus avec cette nouvelle information afin de pouvoir localiser les fichiers de sauvegarde allant de 100M à 1G :

      $ find /var -name *.backup -size +100M -size -1G
    • Enfin, complétez la commande avec une action de suppression pour que ces fichiers soient effacés :

      $ find /var -name *.backup -size +100M -size -1G -delete
  2. Le répertoire /var contient quatre fichiers de sauvegarde :

    db-jan-2018.backup
    db-feb-2018.backup
    db-march-2018.backup
    db-apr-2018.backup
    • En utilisant tar, spécifiez la commande qui créerait un fichier d’archive nommé db-first-quarter-2018.backup.tar :

      $ tar -cvf db-first-quarter-2018.backup.tar db-jan-2018.backup db-feb-2018.backup db-march-2018.backup db-apr-2018.backup
    • En utilisant tar, spécifiez la commande qui va créer l’archive et la compresser en utilisant gzip. Notez que le nom du fichier résultant devra se terminer par .gz :

      $ tar -zcvf db-first-quarter-2018.backup.tar.gz db-jan-2018.backup db-feb-2018.backup db-march-2018.backup db-apr-2018.backup

Linux Professional Insitute Inc. Tous droits réservés. Visitez le site web du projet _Learning_ : https://learning.lpi.org
Ce travail est sous licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.

Linux Professional Insitute Inc. Tous droits réservés. Visitez le site web du projet _Learning_ : https://learning.lpi.org
Ce travail est sous licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.

LPI est une organisation à but non lucratif.

© 2022 Le Linux Professional Institute (LPI) est la référence mondiale en matière de certification et un organisme de soutien aux professionnels de l'Open Source. Avec plus de 200 000 certifiés à son actif, c'est le principal organisme de certification indépendant pour Linux et l'Open Source au monde. Le LPI a certifié des professionnels dans plus de 180 pays, organise des examens en plusieurs langues et compte des centaines de partenaires pour la formation.

Notre objectif est la création d'opportunités économiques et créatives pour tous en rendant accessible au monde entier la certification des connaissances et des compétences en matière d'Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contactez-nous
  • Politique en matière de confidentialité et de cookies

Vous avez repéré une erreur ou vous voulez aider à améliorer cette page ? Faites-nous savoir.

© 1999–2022 The Linux Professional Institute Inc. Tous droits réservés.