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

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicFileOperationsGroup -.-> linux/cp("File Copying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") subgraph Lab Skills linux/cp -.-> lab-301463{{"Collecter des fichiers à partir d'une période spécifique"}} linux/cd -.-> lab-301463{{"Collecter des fichiers à partir d'une période spécifique"}} linux/mkdir -.-> lab-301463{{"Collecter des fichiers à partir d'une période spécifique"}} linux/find -.-> lab-301463{{"Collecter des fichiers à partir d'une période spécifique"}} linux/sudo -.-> lab-301463{{"Collecter des fichiers à partir d'une période spécifique"}} end

Créez 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.

Testez 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.

✨ Vérifier la solution et pratiquer

Sommaire

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