Collecter des fichiers à partir d'une période spécifique

LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce projet, vous allez apprendre à copier les fichiers du répertoire /etc dont l'année de dernière modification est 2022 vers le répertoire /tmp/etc tout en conservant la structure de répertoires.

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • à créer un script pour automatiser le processus de copie de fichiers
  • à utiliser la commande find pour rechercher des fichiers en fonction de leur date de dernière modification
  • à utiliser la commande cp pour copier des fichiers tout en conservant la structure de répertoires

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • automatiser le processus de copie de fichiers à partir d'un répertoire spécifique en fonction de leur date de dernière modification
  • comprendre comment utiliser des commandes shell courantes telles que find et cp pour manipuler des fichiers et des répertoires
  • appliquer vos connaissances pour résoudre des tâches de gestion de fichiers du monde réel

Créer le script de collecte de fichiers

Dans cette étape, vous allez créer un script pour copier les fichiers du répertoire /etc dont l'année de dernière modification est 2022 vers le répertoire /tmp/etc tout en conservant la structure de répertoires.

  1. Ouvrez un éditeur de texte et créez un nouveau fichier nommé collect_files.sh dans le répertoire /home/labex/project.
  2. Ajoutez le code suivant au fichier collect_files.sh :
#!/bin/zsh

## Script: collect_files.sh
## Description: Copie les fichiers du répertoire /etc dont l'année de dernière modification est 2022 vers le répertoire /tmp/etc tout en conservant la structure de répertoires.

source_dir="/etc"
target_dir="/tmp"
year="2022"

## Crée le répertoire cible
mkdir -p "$target_dir"

## Utilise la commande find pour rechercher les fichiers dans le répertoire source dont l'année de dernière modification est 2022 et les copie dans le répertoire cible
find "$source_dir" -type f -newermt "$year-01-01"! -newermt "$year-12-31" -exec cp --parents --dereference "{}" "$target_dir" \;

echo "File copying completed."

Ce script utilise la commande find pour rechercher les fichiers dans le répertoire /etc qui ont été modifiés pour la dernière fois en 2022. Les options -newermt et ! -newermt sont utilisées pour filtrer les fichiers en fonction de leur date de dernière modification. La commande cp est ensuite utilisée pour copier les fichiers dans le répertoire /tmp/etc, en conservant la structure de répertoires.

  1. Enregistrez le fichier.

Tester le script

Dans cette étape, vous allez tester le script collect_files.sh pour vous assurer qu'il fonctionne comme prévu.

  1. Ouvrez un terminal et accédez au répertoire /home/labex/project.
  2. Exécutez le script avec la commande suivante :
sudo sh collect_files.sh

Cette commande exécute le script avec des privilèges élevés, ce qui est nécessaire pour copier des fichiers à partir du répertoire /etc.

  1. Après l'exécution terminée du script, vérifiez le répertoire /tmp/etc pour vous assurer que les fichiers dont l'année de dernière modification est 2022 ont été correctement copiés.
  2. Vérifiez que la structure de répertoires a été conservée. Par exemple, si le fichier /etc/fstab a été copié, vous devriez voir le fichier au chemin /tmp/etc/fstab.

Si le script fonctionne comme prévu, vous avez terminé le projet. Si vous rencontrez des problèmes, réexaminez le script et les instructions, et apportez les ajustements nécessaires.

Résumé

Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.

✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer