Lab 3.3 - Recherche de Fichiers et Liens
Objectifs
À la fin de ce lab, vous serez capable de:
- Rechercher des fichiers avec find et locate
- Créer des liens symboliques
- Créer des liens durs
- Comprendre les différences entre les types de liens
- Utiliser les liens dans des scénarios pratiques
Prérequis
- Ubuntu 24.04 installé
- Terminal ouvert
- Accès utilisateur normal
Exercice 1: Recherche avec find
Étape 1: Recherche Basique
# Créer des fichiers de test
mkdir -p ~/test-search/{docs,scripts,data}
touch ~/test-search/docs/{file1.txt,file2.txt}
touch ~/test-search/scripts/{script1.sh,script2.sh}
touch ~/test-search/data/{data1.csv,data2.csv}
# Rechercher par nom
find ~/test-search -name "file1.txt"
# Rechercher avec wildcards
find ~/test-search -name "*.txt"
# Rechercher par type
find ~/test-search -type f # Fichiers seulement
find ~/test-search -type d # Répertoires seulement
Étape 2: Recherche Avancée
# Par taille
find ~/test-search -size +1M # Plus de 1MB
find ~/test-search -size -1k # Moins de 1KB
# Par date de modification
find ~/test-search -mtime -1 # Modifiés dans les 24h
find ~/test-search -mtime +7 # Modifiés il y a plus de 7 jours
# Par permissions
find ~/test-search -perm 755
# Combinaisons
find ~/test-search -name "*.txt" -mtime -1
Étape 3: Exécuter des Commandes
# Trouver et supprimer (attention!)
find ~/test-search -name "*.tmp" -delete
# Trouver et afficher
find ~/test-search -name "*.txt" -exec ls -lh {} \;
# Trouver et compter
find ~/test-search -type f | wc -l
Exercice 2: locate
Étape 1: Installation et Configuration
# Installer locate
sudo apt update
sudo apt install mlocate
# Mettre à jour la base de données
sudo updatedb
# Rechercher
locate file1.txt
# Recherche insensible à la casse
locate -i file
Étape 2: Limiter les Résultats
# Limiter le nombre de résultats
locate file | head -10
# Compter
locate file | wc -l
Exercice 3: Liens Symboliques
Étape 1: Créer des Liens Symboliques
# Créer un fichier
echo "Contenu original" > ~/original.txt
# Créer un lien symbolique
ln -s ~/original.txt ~/lien-symbolique.txt
# Voir le lien
ls -l ~/lien-symbolique.txt
# Notez la flèche: lien-symbolique.txt -> /home/user/original.txt
# Lire via le lien
cat ~/lien-symbolique.txt
Étape 2: Liens Symboliques vers Répertoires
# Créer un lien vers un répertoire
ln -s ~/test-search ~/lien-repertoire
# Utiliser le lien
ls ~/lien-repertoire
cd ~/lien-repertoire
Étape 3: Liens Symboliques Absolus vs Relatifs
cd ~/test-search
# Lien absolu
ln -s /home/$USER/original.txt lien-absolu.txt
# Lien relatif
ln -s ../original.txt lien-relatif.txt
# Voir la différence
ls -l lien-*.txt
Exercice 4: Liens Durs
Étape 1: Créer des Liens Durs
# Créer un fichier
echo "Contenu" > ~/fichier-original.txt
# Créer un lien dur
ln ~/fichier-original.txt ~/lien-dur.txt
# Voir les deux fichiers
ls -li ~/fichier-original.txt ~/lien-dur.txt
# Notez: même inode (premier nombre)
Étape 2: Propriétés des Liens Durs
# Modifier via le lien dur
echo "Nouveau contenu" >> ~/lien-dur.txt
# Voir le fichier original
cat ~/fichier-original.txt # Contenu modifié!
# Compter les liens
ls -l ~/fichier-original.txt
# Le nombre après les permissions = nombre de liens durs
Étape 3: Supprimer un Lien Dur
# Supprimer le fichier "original"
rm ~/fichier-original.txt
# Le lien dur existe toujours!
cat ~/lien-dur.txt # Contenu toujours là
# Vérifier les inodes
ls -li ~/lien-dur.txt
Exercice 5: Comparaison Liens Symboliques vs Durs
Étape 1: Test de Suppression
# Créer fichier, lien symbolique et lien dur
echo "Test" > test.txt
ln -s test.txt lien-sym.txt
ln test.txt lien-dur.txt
# Supprimer le fichier original
rm test.txt
# Tester le lien symbolique
cat lien-sym.txt # ❌ Erreur: fichier introuvable
# Tester le lien dur
cat lien-dur.txt # ✅ Fonctionne toujours!
Étape 2: Limitations des Liens Durs
# Les liens durs ne fonctionnent pas pour:
# 1. Les répertoires
# ln dir1 dir2 # ❌ Erreur
# 2. Les systèmes de fichiers différents
# ln /mnt/external/file.txt ~/lien.txt # ❌ Erreur si FS différent
# 3. Les liens symboliques peuvent traverser les FS
ln -s /mnt/external/file.txt ~/lien-sym.txt # ✅ Fonctionne
Exercice 6: Cas d'Usage Pratiques
Étape 1: Scripts dans PATH
# Créer un script
cat > ~/mon-script.sh << 'EOF'
#!/bin/bash
echo "Script exécuté!"
EOF
chmod +x ~/mon-script.sh
# Créer un lien dans un répertoire du PATH
sudo ln -s ~/mon-script.sh /usr/local/bin/mon-script
# Utiliser depuis n'importe où
mon-script
Étape 2: Versions de Logiciels
# Simuler des versions
mkdir -p ~/app/{v1.0,v2.0}
echo "Version 1.0" > ~/app/v1.0/app.txt
echo "Version 2.0" > ~/app/v2.0/app.txt
# Lien vers version actuelle
ln -s ~/app/v2.0 ~/app/current
# Utiliser
cat ~/app/current/app.txt
# Changer de version facilement
rm ~/app/current
ln -s ~/app/v1.0 ~/app/current
Étape 3: Configuration
# Fichier de config dans home
echo "config=value" > ~/.myapp-config
# Lien depuis /etc
sudo ln -s ~/.myapp-config /etc/myapp-config
# Utiliser
cat /etc/myapp-config
Vérification
Checklist
Vérifiez que vous pouvez:
- Rechercher des fichiers avec find
- Utiliser locate pour recherche rapide
- Créer des liens symboliques (ln -s)
- Créer des liens durs (ln)
- Comprendre les différences entre les deux types
- Utiliser les liens dans des scénarios pratiques
Questions de Réflexion
-
Quand utiliser un lien symbolique vs un lien dur?
- Symbolique: répertoires, fichiers sur différents FS, versions
- Dur: même FS, backup de sécurité
-
Pourquoi les liens durs partagent-ils le même inode?
- Ils pointent vers les mêmes données sur le disque
- Le fichier n'est supprimé que quand tous les liens sont supprimés
-
Quelle est la différence entre find et locate?
- find: recherche en temps réel, plus flexible
- locate: base de données pré-indexée, plus rapide mais peut être obsolète
Prochaines Étapes
- Lab 3.4: Pratique Complète
- Chapitre 3.6: Recherche de Fichiers
- Chapitre 3.7: Liens Symboliques et Durs
Lab créé le: Décembre 2024 - Testé sur Ubuntu 24.04