Dateien aus einem bestimmten Zeitraum sammeln

LinuxBeginner
Jetzt üben

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

Erstelle das Skript 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.

Teste das Skript

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.

Zusammenfassung

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

✨ Lösung prüfen und üben✨ Lösung prüfen und üben