Hallo Christian, * Am 10.01.2002 um 23:13 Uhr schrieb Christian Boltz:
ich suche ein Programm, um Verzeichnisinhalte (incl. Unterverzeichnisse) abzugleichen.
Bezüglich des Abgleichs habe ich einen Spezialwunsch:
Neue und geänderte Dateien sollen in ein drittes Verzeichnis kopiert werden (z. B. um davon eine CD zu brennen oder das ganze per Diskette auf einen anderen Rechner zu kopieren).
Also nach dem Motto: vergleiche die Verzeichnisse ~/dir1 mit ~/dir2 und schreibe neue/geänderte Dateien nach ~/changes
Gibt es da irgendwas passendes?
keine Ahnung, aber hier ein kleines Script, dass diese Aufgabe erledigen sollte: ---[ schnipp ]--- #!/bin/bash ALTDIR=~/dir1 # Altes Verzeichnis NEUDIR=~/dir2 # Neues Verzeichnis CHANGEDIR=~/changes # Hierher werden Änderungen kopiert TMP=/tmp # Wo befinden sich die temp. Dateien TMP1=$TMP/index1 # Index für das Altverzeichnis TMP2=$TMP/index2 # Index für das Neuverzeichnis TMP3=$TMP/index3 # Index aller eindeutigen Verzeichnisse # ggf. Index1 löschen if [ -e "$TMP1" ]; then rm $TMP1 fi # Index des Altverzeichnis aufbauen find $ALTDIR -type f | while read Zeile; do CheckSum=$(md5sum -b "$Zeile") echo "A $CheckSum" done >>$TMP1 # ggf. Index2 löschen if [ -e "$TMP2" ]; then rm $TMP2 fi # Index des Neuverzeichnis aufbauen find $NEUDIR -type f | while read Zeile; do CheckSum=$(md5sum -b "$Zeile") echo "N $CheckSum" done >>$TMP2 # Index mit eindeutigen Dateien aufbauen cat $TMP1 $TMP2 | sort +1 -32 | uniq -u -s 1 -w 32 >$TMP3 # Alle eindeutigen Kandidaten etwas genauer unter die Lupe nehmen ;-) while read Zeile; do Satzart=$(echo "${Zeile:0:1}") # Satzart ermitteln if [ "$Satzart" == "N" ]; then # Nur Neuzugänge/Änderungen verarbeiten Datei=$(echo ${Zeile#*\*}) # Zugriffspfad extrahieren cp --parents "$Datei" $CHANGEDIR/ # Datei ins Change-Verzeichnis kopieren fi done <$TMP3 # Temp. Dateien löschen rm $TMP1 $TMP2 $TMP3 ---[ schnapp ]--- Das Ausschmücken und die Fehlerbehandlung überlasse ich Dir ;-) Da hier mit Hilfe von Checksummen gearbeitet wird, interessieren die Dateinamen und Zugriffszeiten nicht. Nur der reine Datei- inhalt wird verglichen. Das hat allerdings zur Folge, dass Dateien mit dem selben Inhalt aber unterschiedlichen Namen als identisch anerkannt und nicht kopiert werden. Hier ist vielleicht noch ein wenig Nacharbeit erforderlich. Jürgen -- Hast Du Zweifel, lass es ueberzeugend klingen. / Registered Linux-User #130804 http://counter.li.org \ \ Linux Stammtisch Bremerhaven http://linux.hs-bremerhaven.de /