Aller au contenu principal

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​

  1. 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é
  2. 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
  3. 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