Créer, copier, déplacer et supprimer des fichiers
En tant que technicien, vous manipulez quotidiennement des fichiers sur les serveurs Linux : sauvegardes de configs, déplacement de logs, nettoyage d'espace disque. Ces opérations s'effectuent avec une poignée de commandes simples mais redoutables : car rm n'a pas de corbeille.
mkdir : créer des dossiers
mkdir sauvegardes # crée un dossier dans le répertoire courant
mkdir -p /opt/glpi/sauvegardes # crée toute l'arborescence si elle n'existe pas
L'option -p (parents) est indispensable quand les dossiers intermédiaires n'existent pas encore.
touch : créer un fichier vide (ou mettre à jour la date)
touch rapport.txt # crée rapport.txt vide
touch config.bak # utile pour initialiser un fichier avant de le remplir
cp : copier
cp fichier.txt copie.txt # copier un fichier
cp -r /etc/apache2 /tmp/apache2-bak # copier un dossier (-r = récursif)
cp -p fichier.conf /tmp/ # copier en préservant les droits et dates
mv : déplacer (ou renommer)
mv rapport.txt /tmp/ # déplacer vers /tmp/
mv ancien-nom.txt nouveau.txt # renommer (même dossier)
mv *.log /var/archive/ # déplacer tous les .log
mvne copie pas : il coupe-colle. Sur le même système de fichiers, c'est instantané.
rm : supprimer (SANS corbeille)
rm fichier.txt # supprimer un fichier
rm -r /tmp/anciens-logs/ # supprimer un dossier et son contenu
rm -i *.log # demande confirmation avant chaque suppression
Règle d'or : ne jamais utiliser rm -rf / ni rm -rf /* : c'est la commande qui efface tout le système sans confirmation.
Wildcards (caractères joker)
| Joker | Signification | Exemple |
|---|---|---|
* | N'importe quelle suite de caractères | *.log → tous les .log |
? | Un seul caractère | log?.txt → log1.txt, logA.txt |
[abc] | Un caractère parmi la liste | [0-9]*.conf |
Cas concret
L'espace disque du serveur GLPI est presque plein. Vous devez archiver les logs de plus de 30 jours avant de les supprimer :
# 1. Créer un dossier d'archive daté
mkdir -p /opt/archives/$(date +%Y-%m-%d)
# 2. Copier les anciens logs (on verra find plus tard)
cp /var/log/glpi/*.log /opt/archives/$(date +%Y-%m-%d)/
# 3. Vérifier avant de supprimer
ls -lh /opt/archives/$(date +%Y-%m-%d)/
# 4. Supprimer les originaux
rm /var/log/glpi/*.log
flowchart TD
A[Identifier les fichiers à traiter] --> B{Copier ou déplacer ?}
B -->|Garder l'original| C[cp -r source destination]
B -->|Supprimer l'original| D[mv source destination]
C --> E[Vérifier avec ls -lh]
D --> E
E --> F{Fichiers obsolètes à supprimer ?}
F -->|Oui, avec précaution| G[rm -i fichiers]
F -->|Non| H[Terminé]
Erreurs fréquentes
- Utiliser
rm -rsans vérifier ce que l'on pointe : unlsavantrmévite les catastrophes. - Oublier
-raveccppour copier un dossier :cpseul échoue silencieusement sur un dossier. - Confondre
mv(coupe) etcp(copie) : après unmv, le fichier source n'existe plus.
À retenir
mkdir -pcrée toute l'arborescence en une commande.rmest définitif : toujours vérifier aveclsavant, ou utiliserrm -i.mvsert à la fois à déplacer et à renommer.
Mini-exercice
Dans votre terminal, créez la structure /tmp/test-polarys/logs/ avec une seule commande mkdir -p. Créez ensuite un fichier access.log vide avec touch. Copiez-le sous le nom access.log.bak avec cp. Vérifiez le résultat avec ls -lh /tmp/test-polarys/logs/.