Après avoir abordé de manière succincte l’administration système du Raspberry pi, nous allons aborder la gestion des fichiers du défi.
Nous allons voir comment est architecturée Raspberry pi OS et quelles sont les grandes lignes de la vision du système de fichiers.
Ce voyage va être dépaysant pour beaucoup. Le monde de Linux et le monde de Windows ne voient pas du tout les choses de la même manière.
Comme pour l’article précédent, la majorité de ce que nous allons voir, est transposable sous n’importe quelle distribution Linux.
Je n’aborderai que les options les plus indispensables. La majorité des commandes présentes ci-dessous dispose de nombreuses options afin de travailler le plus finement possible.
Table des matières
Généralités sur les systèmes de fichiers
Sous Linux, tout est fichier. Voilà c’est fini. Je plaisante, ce n’est que le début. Cependant, cette notion est très importante. Les dossiers sont vus comme un fichier comprenant des fichiers. Le matériel est aussi vu comme un fichier dans lequel on lit ou on écrit des données. D’où l’importance de comprendre l’architecture des dossiers sous Linux. Cela répond à une logique et est normalisé par la norme FHS .
À l’origine de tout système Linux, se trouve ce que l’on appelle la racine : le /. Tous les composants du système peuvent être adressés à partir de la racine.
Je ne vais pas faire une description exhaustive des différents dossiers présents à la racine. Je ne vous fournis que les principaux. Surtout que certains dossiers ne sont là que par compatibilité avec les anciens systèmes.
Les principaux dossiers à connaître sont :
- etc : ce dossier regroupe la totalité des fichiers de configuration des logiciels installés.
- home : ce dossier va regrouper la totalité des fichiers des utilisateurs.
- var : c’est là où la majorité des journaux est stockée. Ainsi que les données de certains logiciels tels que les serveurs Web.
- opt : c’est un dossier un peu particulier, vide à l’installation du nouveau système. Si vous passez systématiquement par le gestionnaire de logiciels pour installer ceux dont vous avez besoin, il restera vide. Si vous avez des logiciels que vous avez téléchargés sur Internet, ils s’installeront pour la plupart dans ce répertoire. C’est ici aussi qu’il est conseillé de mettre les logiciels que vous avez compilés vous-même.
- dev : le contenu de ce dossier est temporaire. Il n’existe que le temps où le système est lancé. Il est vidé à chaque carré et peuplé à chaque démarrage par un logiciel précis.
- proc : le contenu de ce dossier est aussi temporaire. C’est ici que sont stockées la totalité des informations concernant le processeur et les processus en cours d’utilisation.
Les deux derniers dossiers sont des dossiers que vous ne pouvez pas modifier de manière pérenne. Toute modification sera automatiquement perdue au prochain redémarrage. La modification dépasse largement le périmètre de ce défi et ne sera pas abordée ici.
Nous travaillerons surtout dans le dossier, etc. Nous consulterons beaucoup le dossier dev pour toute la partie concernant les systèmes de fichiers.
Commande principale pour la gestion des fichiers du défi
Chemin absolu, chemin relatif.
Avant de voir les principales commandes pour la gestion des fichiers du défi, je vais aborder une notion capitale qui est celle du chemin absolu et du chemin relatif. Cette notion n’est pas spécifique à Linux. Elle permet de répondre à la question comment localiser un fichier ou un dossier dans le système. Tout est relatif, comme dirait le vieil Albert.
Tout dépend en fait de notre point de vue. Et comme souvent en informatique, il n’y a pas une seule réponse et surtout plusieurs bonnes réponses.
Le chemin absolu, comme son nom l’indique, n’est soumis à aucune interprétation. Ce chemin part de la racine du système. Le / représentant la racine se trouve donc être le premier élément du chemin. À la suite, se trouve dans l’ordre exact de parcours, les noms des dossiers qu’il faut ouvrir pour arriver au dossier ou fichier voulu.
Le chemin relatif, quant à lui, est interprété par l’éditeur de commandes. Le chemin part du dossier actuel dans lequel nous sommes. Ce qui veut dire que le chemin est amené à évoluer à chaque modification du dossier actuel.
Quel est donc l’intérêt d’avoir plusieurs façons de noter le chemin ? De manière générale, le chemin absolu est beaucoup plus long que le chemin relatif. En revanche, il fonctionnera où que nous soyons dans le système. De plus, en cas de plusieurs dossiers portant le même nom mais ne se trouvant pas au même endroit dans le système, la notation relative peut amener à une modification qui soit effectuée sur le mauvais dossier.
Chacun a ses préférences. Les miennes sont assez simples : dès que le dossier que je cherche à obtenir, nécessite plus de deux remontées de dossier, je passe en mode absolu. Je reste en mode relatif, quand je travaille dans des sous-dossiers. Globalement, c’est ce que vous constaterez lors de ce défi.
Afficher les dossiers
La première chose à savoir faire dans la gestion des fichiers du défi est d’afficher les fichiers et les dossiers. La commande est assez simple et possède de trois options très intéressantes. Si aucun chemin n’est fourni, la commande affichera le contenu du dossier courant.
- L’option l affiche les dossiers et fichiers sous forme de liste.
- L’option h affiche les tailles des dossiers et fichiers en unité lisible par l’homme.
- L’option a affiche tous les dossiers, y compris ceux qui sont cachés. Sous Linux, un fichier ou un dossier caché est un dossier commençant par un point.
Note : il existe deux dossiers particuliers présents dans tous les dossiers :
- Le dossier . : qui pointe vers le dossier actuel.
- Le dossier .. : qui pointe vers le dossier parent.
gabriel@raspberrypi:~ $ ls -alh total 100K drwxr-xr-x 18 gabriel gabriel 4,0K 24 oct. 22:33 . drwxr-xr-x 3 root root 4,0K 6 oct. 10:51 .. -rw------- 1 gabriel gabriel 872 23 oct. 23:13 .bash_history -rw-r--r-- 1 gabriel gabriel 220 3 mai 02:07 .bash_logout -rw-r--r-- 1 gabriel gabriel 3,5K 3 mai 02:07 .bashrc drwxr-xr-x 2 gabriel gabriel 4,0K 3 mai 02:16 Bookshelf drwxr-xr-x 7 gabriel gabriel 4,0K 6 oct. 11:04 .cache drwx------ 11 gabriel gabriel 4,0K 17 oct. 18:23 .config drwx------ 2 gabriel gabriel 4,0K 6 oct. 11:45 .cups drwxr-xr-x 2 gabriel gabriel 4,0K 6 oct. 10:50 Desktop drwxr-xr-x 2 gabriel gabriel 4,0K 6 oct. 10:51 Documents drwxr-xr-x 2 gabriel gabriel 4,0K 6 oct. 10:51 Images drwxr-xr-x 3 gabriel gabriel 4,0K 3 mai 02:16 .local drwxr-xr-x 2 gabriel gabriel 4,0K 6 oct. 10:51 Modèles drwxr-xr-x 2 gabriel gabriel 4,0K 6 oct. 10:51 Musique drwx------ 3 gabriel gabriel 4,0K 6 oct. 11:04 .pki drwx------ 3 gabriel gabriel 4,0K 10 oct. 16:50 .pp_backup -rw-r--r-- 1 gabriel gabriel 807 3 mai 02:07 .profile drwxr-xr-x 2 gabriel gabriel 4,0K 6 oct. 10:51 Public drwxr-xr-x 2 gabriel gabriel 4,0K 6 oct. 10:51 Téléchargements drwxr-xr-x 2 gabriel gabriel 4,0K 6 oct. 10:51 Vidéos drwx------ 3 gabriel gabriel 4,0K 6 oct. 11:18 .vnc -rw------- 1 gabriel gabriel 56 24 oct. 22:33 .Xauthority -rw------- 1 gabriel gabriel 2,6K 24 oct. 22:33 .xsession-errors -rw------- 1 gabriel gabriel 2,6K 23 oct. 23:14 .xsession-errors.old
Se déplacer
Le déplacement de dossier en dossier se fait par la commande cd. Elle accepte à la fois les chemins relatifs et les chemins absolus. Si aucun argument n’est fourni à la commande, cette dernière déplace le dossier actuel dans le dossier personnel de l’utilisateur.
gabriel@raspberrypi:~ $ cd /etc/ gabriel@raspberrypi:/etc $ gabriel@raspberrypi:/etc $ cd gabriel@raspberrypi:~ $
Créer un dossier
Il est possible de créer un dossier. Cette commande ne présente aucune difficulté particulière et prend pour argument le nom du dossier.
gabriel@raspberrypi:~ $ mkdir test
Créer un fichier
Comme pour les dossiers, il est possible de créer un fichier texte de manière simple. La commande prend pour seul argument le nom du fichier. De plus, l’extension du fichier n’a aucune importance sous Linux.
gabriel@raspberrypi:~/test $ touch test.txt
Déplacer un dossier ou un fichier
Vous pouvez déplacer un dossier ou un fichier vers un autre dossier. Si vous changez son nom en restant dans le même dossier, cela le renommera. Dans l’exemple suivant le fichier test2.txt est déplacé dans le dossier test. C’est une des commandes indispensable dans la gestion des fichiers du défi.
gabriel@raspberrypi:~ $ mv test2.txt test/
Copier un dossier ou un fichier
La copie d’un dossier nécessite l’utilisation d’une option particulière : r.
La copie d’un fichier ne nécessite aucune option particulière, bien que des options pouvant être utiles existent. Si vous changez son nom en restant dans le même dossier, cela le dupliquera. C’est une des commandes indispensable dans la gestion des fichiers du défi. En effet, nous copierons des fichiers de configurations de base que nous modifierons par la suite.
gabriel@raspberrypi:~ $ cp -r test test.old
Supprimer un dossier ou un fichier
Il est possible de supprimer un dossier vide avec une commande spécifique.
gabriel@raspberrypi:~ $ rmdir dossier_vide/
Il est aussi possible de supprimer un dossier non vide avec la même commande que pour supprimer un fichier en rajoutant l’option -R.
gabriel@raspberrypi:~ $ rm -R test.old/
Attention cependant, la suppression est définitive en mode de ligne de commande. Si les interfaces graphiques possèdent une poubelle, ce n’est pas le cas de la ligne de commande. C’est une des commandes indispensable dans la gestion des fichiers du défi.
Commande principale pour la lecture
Il existe plusieurs commandes pour lire des fichiers sous Linux. Je ne vais en présenter que trois.
Afficher un fichier complet
La commande cat affiche le contenu complet du fichier.
gabriel@raspberrypi:~/test $ cat test.txt Avant de voir les principales commandes pour la gestion des fichiers du défi, je vais aborder une notion capitale qui est celle du chemin absolu et du chemin relatif. Cette notion n'est pas spécifique à Linux. Elle permet de répondre à la question comment localiser un fichier ou un dossier dans le système. Tout est relatif, comme dirait le vieil Albert. Tout dépend en fait de notre point de vue. Et comme souvent en informatique, il n'y a pas une seule réponse et surtout plusieurs bonnes réponses. gabriel@raspberrypi:~/test $
Afficher une partie d’un fichier
La commande tail affiche par défaut les 10 dernières lignes d’un fichier. Elle est généralement utilisée pour lire les logs du système.
gabriel@raspberrypi:~/test $ sudo tail /var/log/boot.log.1 [ OK ] Finished Check for glamor. [ OK ] Finished Save/Restore Sound Card State. [ OK ] Started /etc/rc.local Compatibility. [ OK ] Started Authorization Manager. [ OK ] Reached target Sound Card. Starting Modem Manager... [ OK ] Finished Permit User Sessions. Starting Light Display Manager... Starting Hold until boot process finishes up... [ OK ] Started LSB: Switch to ond…(unless shift key is pressed).
La commande more va parcourir la totalité du fichier à afficher, et le cas échéant l’afficher écran par écran, si celui-ci est plus long. Pour passer d’un écran à l’autre, il faut appuyer sur la barre d’espace.
Commande principale pour la gestion des systèmes de fichiers
Afficher les périphériques
La gestion des systèmes de fichiers nécessite de connaître les principaux périphériques de stockage rattaché au système. La commande lsblk permet d’afficher la totalité des périphériques de stockage ainsi que leur point de montage. C’est une des commandes indispensable dans la gestion des fichiers du défi.
gabriel@raspberrypi:~/test $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 28,7G 0 disk ├─sda1 8:1 1 28,6G 0 part /media/gabriel/Ventoy └─sda2 8:2 1 32M 0 part mmcblk0 179:0 0 14,4G 0 disk ├─mmcblk0p1 179:1 0 256M 0 part /boot └─mmcblk0p2 179:2 0 14,2G 0 part /
Le point de montage
C’est un dossier qui sert de point d’entrée aux périphériques de stockage et à une partition. C’est l’équivalent de la lettre de périphériques sous Windows.
Il est recommandé de monter les clés USB ou disque USB dans le dossier média. Par défaut Raspberry pi OS monte automatiquement une clé USB lors de son branchement dans ce dossier.
Afficher les périphériques montés
La commande mount montre la totalité des fichiers qui sont montés sur le système.
gabriel@raspberrypi:~/test $ mount /dev/mmcblk0p2 on / type ext4 (rw,noatime) devtmpfs on /dev type devtmpfs (rw,relatime,size=340460k,nr_inodes=85115,mode=755) proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,size=188820k,nr_inodes=819200,mode=755) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=29,pgrp=1,timeout=0,minproto=5,maxproto=5,direct) sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime) mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime) tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime) configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime) fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime) /dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=94408k,nr_inodes=23602,mode=700,uid=1000,gid=1000) gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000) /dev/sda1 on /media/gabriel/Ventoy type exfat (rw,relatime,fmask=0022,dmask=0022,iocharset=utf8,errors=remount-ro)
La commande df permet de lister la totalité des points de montage ainsi que la capacité et l’utilisation. C’est une des commandes indispensable dans la gestion des fichiers du défi.
gabriel@raspberrypi:~/test $ df -PTh Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur /dev/root ext4 14G 3,5G 9,9G 27% / devtmpfs devtmpfs 333M 0 333M 0% /dev tmpfs tmpfs 461M 0 461M 0% /dev/shm tmpfs tmpfs 185M 1,1M 184M 1% /run tmpfs tmpfs 5,0M 4,0K 5,0M 1% /run/lock /dev/mmcblk0p1 vfat 255M 51M 205M 20% /boot tmpfs tmpfs 93M 24K 93M 1% /run/user/1000 /dev/sda1 exfat 29G 4,0G 25G 14% /media/gabriel/Ventoy
Démonter un périphérique
Comme sous Windows, il faut démonter les périphériques de stockage avant de retirer physiquement le périphérique. Ceci afin de synchroniser les écritures sur le périphérique. Ne pas le faire, vous expose à la perte ou la corruption de données.
Pour démonter un périphérique, il suffit d’utiliser la commande umount suivi du périphérique ou du point de montage. C’est une des commandes indispensable dans la gestion des fichiers du défi.
gabriel@raspberrypi:~/test $ umount /dev/sda1
Procédure manuelle pour monter un volume.
Si vous souhaitez remonter une clé que vous avez auparavant démontée sans pour autant l’avoir retiré du système, c’est possible et ceci sans débrancher et rebrancher la clé.
- Il va falloir dans un premier temps créer un dossier pour le point de montage.
- Puis monter le périphérique sur ce point de montage.
Conclusion
Voilà arrivé à la fin de cet article, qui comme son prédécesseur est très dense. Il vous a présenté les principales commandes pour la gestion des fichiers du défi.
Avec un peu de pratique, la majorité de ces commandes vous deviendront rapidement simples. N’hésitez pas à vous entraîner à toutes ces commandes pour la gestion des fichiers du défi.
Comme pour les fois précédentes, si vous avez des commentaires ou des questions n’hésitaient pas à les mettre sur le site, LinkedIn ou Facebook.