Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

aurevo

Komplett-PC-Käufer(in)
Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Hallo zusammen,

die Überschrift ist ein wenig hackelig, aber wusste nicht, wie ich das vernünftig umschreiben soll.

Ich habe zwei Ordner, in einem Ordner sind alle Dateien, die in den anderen kopiert werden sollen zusammen in dem Ordner (links).

Das Ziel ist der zweite Ordner, dort gibt es aber Unterordner, in die auch kopiert werden soll (rechts).

Also müsste links geschaut werden, ob die Datei rechts vorhanden ist (auch in Unterordnern) und dann überschrieben werden, insofern sie links neuer ist.

Ist das so verständlich? Kann man das irgendwie realisieren?

Quasi ein Update-Vorgang inklusive rekursiver Suche in Unterordnern.

Beste Grüße
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

SyncToy kann sowas, vlt auch Robocopy vlt reicht auch die eingebaute Funktion von Windows7 (Kopieren wenn neuer)
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Robocopy sagt mir durchaus etwas, habe mir auch gerade das Yarcgui dazu runtergeladen, aber welche Parameter muss ich setzen?

Links habe ich ja eine flache Ordnerstruktur, also alle Datein in einem Ordner und rechts sind die dazugehörigen Dateien, die überschrieben werden sollen in Unterordnern.
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

ich bin raus, hatte mich verlesen, das mit den Unterordnern ist nicht trivial...

if (datei_links gefunden in Unterordner rechts)
if (rechts (oder links?) neuer)
kopie
end_if
end_if

So? oder wie
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

ich bin raus, hatte mich verlesen, das mit den Unterordnern ist nicht trivial...

if (datei_links gefunden in Unterordner rechts)
if (rechts (oder links?) neuer)
kopie
end_if
end_if

So? oder wie

Als Beispiel:

links\datei1.test
links\datei2.test
links\datei3.test

zu

rechts\Ordner1\datei1.test
rechts\Ordner2\datei2.test
rechts\Ordner3\Ordner4\datei3.test

Die Dateien sind links nur einmal vorhanden, rechts auch, wenn überhaupt vorhanden, nur einmal, aber eben zum Großteil auch in Ordnern oder Unterordnern.

Also quasi muss die Datei von links dahin kopiert werden, wo sie rechts gefunden wird und die alte Datei ersetzen.
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Das geht über die Mir, für mirror Option.
Empfehle nen Testdurchlauf mit Dummy-Ordnern.
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Das geht über die Mir, für mirror Option.
Empfehle nen Testdurchlauf mit Dummy-Ordnern.

Also für mich spiegelt die Option doch bloß?

"Prinzipiell benötigen Sie zum Anlegen eines Backups nur einen einzigen Parameter von Robocopy. Dieser Parameter lautet /MIR (Mirror). /MIR legt eine Spiegelung der Struktur der Quelle in einem von Ihnen vorgegebenen Archiv-Ordner an."

Wenn die Struktur übernommen wird, werden die Dateien von links aber ja nicht in die Ordner von rechts quasi einsortiert.
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Was? Du wolltets doch das rechts aktualisieert wird.
Oder sollen die sich untereinander aktualisieren?

Mit versch. Dateien in versch. Ordnern?
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Wenn ich das richtig verstanden habe soll die Datei beim Kopieren auch in den passenden Ordner "einsortiert" werden, also der Baum ist links und rechts unterschiedlich...
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Hmm, fürchte das gibt es nicht.
Er müsste so für keden Unterschied im Baum eine eigene Regel aufstellen.
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Das Programm ansich sieht wirklich gut aus, nur sucht er die gleichen Dateien dort auch nicht in den Unterordnern, er listet die Dateien auf beiden Seiten auf, aber stellt die eben nicht nebeneinander als die selben Dateien dar.
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Was meine Aussage bestätigt.
Extraregeln für alle Abweichungen in der Ordnerstruktur.
Oder du lässt das ganze gegen einen Dritten Baum rennen.
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Ich habe hier einmal ein kleines Python Script geschrieben, welches deine Aufgabe erfüllen sollte:

Code:
import os, time, shutil


backup_dir="C:\\Users\\Laudian\\Desktop\\test2"
original_dir="C:\\Users\\Laudian\\Desktop\\test1"


for root, dirs, files in os.walk(backup_dir):
        for file in files:
                time_secs_backup = os.stat(os.path.join(root, file))[8]
                original = os.path.join(original_dir, file)
                time_secs_original = os.stat(original)[8]
                if time_secs_original > time_secs_backup:
                        print("Datei",file,"wird gesichert")
                        shutil.copy2(original, root)

Einfach Python installieren, das Script irgendwo als Textdatei speichern und die Endung von .txt in .py ändern.
Und du musst natürlich backup_dir und original dir anpassen. Dabei darauf achten, dass du für Python immer zwei Backslah (\) benutzen musst, obwohl im Windows Pfad nur eines angezeigt wird.

Und teste es lieber erst einmal, bevor du das Script an die originale läst ;-)

Edit: Das Script funktioniert folgendermaßen: Für jede Datei im rechten Ordner wird überprüft, ob es im linken eine neuere Version dieser Datei gibt. Wenn ja wird sie kopiert.
Das setzt voraus, dass (a) jede Datei im rechten Ordner auch im linken vorkommt und (b), dass jeder Dateiname nur einmal vorkommt.
 
AW: Kopiervorgang - Nur vorhandene Dateien mit neuerer Version überschreiben

Genau das ist unser Problem:
Gleiches File (Name), verschiedene Ordner (Tiefen und Bezeichnungen).
 
Zurück