Dateien aus einem bestimmten Zeitraum sammeln

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du Dateien aus dem Verzeichnis /etc mit einem letzten Änderungsjahr von 2022 in das Verzeichnis /tmp/etc kopierst, wobei die Verzeichnisstruktur beibehalten wird.

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du ein Skript erstellst, um den Dateikopierprozess zu automatisieren
  • Wie du die find-Befehl verwendest, um Dateien nach ihrem letzten Änderungsdatum zu suchen
  • Wie du die cp-Befehl verwendest, um Dateien zu kopieren, wobei die Verzeichnisstruktur beibehalten wird

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Den Prozess der Kopieren von Dateien aus einem bestimmten Verzeichnis basierend auf ihrem letzten Änderungsdatum zu automatisieren
  • Zu verstehen, wie du übliche Shell-Befehle wie find und cp verwendest, um Dateien und Verzeichnisse zu manipulieren
  • Dein Wissen anzuwenden, um reale Dateiverwaltungstasks zu lösen

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group 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{{"Dateien aus einem bestimmten Zeitraum sammeln"}} linux/cd -.-> lab-301463{{"Dateien aus einem bestimmten Zeitraum sammeln"}} linux/mkdir -.-> lab-301463{{"Dateien aus einem bestimmten Zeitraum sammeln"}} linux/find -.-> lab-301463{{"Dateien aus einem bestimmten Zeitraum sammeln"}} linux/sudo -.-> lab-301463{{"Dateien aus einem bestimmten Zeitraum sammeln"}} end

Erstellen des Skripts zum Sammeln von Dateien

In diesem Schritt wirst du ein Skript erstellen, um Dateien aus dem Verzeichnis /etc mit einem letzten Änderungsjahr von 2022 in das Verzeichnis /tmp/etc zu kopieren, wobei die Verzeichnisstruktur beibehalten wird.

  1. Öffne einen Texteditor und erstelle in dem Verzeichnis /home/labex/project eine neue Datei namens collect_files.sh.
  2. Füge dem Datei collect_files.sh folgenden Code hinzu:
#!/bin/zsh

## Skript: collect_files.sh
## Beschreibung: Kopiert Dateien aus dem Verzeichnis /etc mit einem letzten Änderungsjahr von 2022 in das Verzeichnis /tmp/etc, wobei die Verzeichnisstruktur beibehalten wird.

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

## Erstelle das Zielverzeichnis
mkdir -p "$target_dir"

## Verwende den find-Befehl, um Dateien im Quellverzeichnis mit einem letzten Änderungsjahr von 2022 zu suchen und sie in das Zielverzeichnis zu kopieren
find "$source_dir" -type f -newermt "$year-01-01"! -newermt "$year-12-31" -exec cp --parents --dereference "{}" "$target_dir" \;

echo "Dateikopie abgeschlossen."

Dieses Skript verwendet den find-Befehl, um Dateien im Verzeichnis /etc zu suchen, die im Jahr 2022 zuletzt geändert wurden. Die Optionen -newermt und ! -newermt werden verwendet, um die Dateien basierend auf ihrem letzten Änderungsdatum zu filtern. Der cp-Befehl wird dann verwendet, um die Dateien in das Verzeichnis /tmp/etc zu kopieren, wobei die Verzeichnisstruktur beibehalten wird.

  1. Speichere die Datei.

Testen des Skripts

In diesem Schritt wirst du das Skript collect_files.sh testen, um sicherzustellen, dass es wie erwartet funktioniert.

  1. Öffne ein Terminal und navigiere zum Verzeichnis /home/labex/project.
  2. Führe das Skript mit dem folgenden Befehl aus:
sudo sh collect_files.sh

Dieser Befehl führt das Skript mit erhöhten Rechten aus, was erforderlich ist, um Dateien aus dem Verzeichnis /etc zu kopieren.

  1. Nachdem das Skript abgeschlossen ist, überprüfe das Verzeichnis /tmp/etc, um sicherzustellen, dass die Dateien mit einem letzten Änderungsjahr von 2022 korrekt kopiert wurden.
  2. Verifiziere, dass die Verzeichnisstruktur beibehalten wurde. Beispielsweise sollte die Datei /etc/fstab kopiert werden, und du solltest die Datei am Pfad /tmp/etc/fstab finden.

Wenn das Skript wie erwartet funktioniert, hast du das Projekt abgeschlossen. Wenn du Probleme stellst, überprüfe das Skript und die Anweisungen und mache die erforderlichen Anpassungen.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.