3.3k Aufrufe
Gefragt in Windows2000 von nostalgiker6 Experte (7.1k Punkte)
Ich kopiere regelmässig per Batch alle neuen und geänderten Dateien aus bestimmten Verzeichnissen auf eine andere Platte. Im Quellverzeichnis gelöschte Dateien bleiben dabei im Zielverzeichnis stehen. Das ist für eine Weile sogar ganz nützlich. Damit sie aber nicht auf Dauer stehen bleiben, lösche ich gelegentlich das eine oder andere Zielverzeichnis, so dass (nur) alle im QV noch existierenden Dateien neu übertragen werden.

Hat irgendjemand eine Idee, wie das eleganter zu lösen wäre?
Ideal wäre ein Parameter, der besagt: "Lösche alle Dateien im ZV, die im QV fehlen." So etwas gibt es aber leider nicht - jedenfalls habe ich nichts derartiges gefunden.

11 Antworten

0 Punkte
Beantwortet von mixmax Experte (2.2k Punkte)
kannst du nicht einfach das ganze zielverzeichniss vorm kopieren einmal löschen? wenn eh nichts im zielverzeichniss sein soll als die zu kopierenden verzeichnisse dürfte das ja aufs gleiche hinauslaufen,

oder sind in den vorhandenen ordnern im zielverzeichniss dateien die im quellverzeichniss in gleichen unterordnern nicht da sind?
0 Punkte
Beantwortet von steffen2 Experte (6.4k Punkte)
das geht bei RoboCopy

Dazu gibt es auch einige Threads hier im Forum

Gruß Steffen
0 Punkte
Beantwortet von steffen2 Experte (6.4k Punkte)
kannst du nicht einfach das ganze zielverzeichniss vorm kopieren einmal löschen?


und dann der Supergau dass die Platte mit dem Original in dem Moment abraucht...
0 Punkte
Beantwortet von mixmax Experte (2.2k Punkte)

[quote]Zitat:
kannst du nicht einfach das ganze zielverzeichniss vorm kopieren einmal löschen?



und dann der Supergau dass die Platte mit dem Original in dem Moment abraucht...
[/quote]

nun dann wenn es als Backup dienen soll bennene das Zielverzeichniss um, kopiere dann die Dateien in ein neu erstelltes Zielverzeichniss und lösche nach erfolg das umbenannte Zielverzeichniss....

bitte etwas mehr einfallsreichtum steffen2 ^^

mfg
0 Punkte
Beantwortet von steffen2 Experte (6.4k Punkte)
@ MixMax
so habe ich es früher sogar gemacht, aber seit die Datenmengen so groß wurden gab es dann Platzprobleme auf der HDD und Zeitprobleme beim sichern.

und seitdem nutze ich für alle diese Sicherungs-Jobs eben Robocopy.

eine Beispielzeile aus einer Batch:
robocopy "C:\Users\Steffen\Desktop" \\server\Steffen_kopie\Desktop /mir /fft


das MIR ist für das Spiegeln zuständig und löscht eben die Dateien die auf dem Original auch fehlen.


Gruß Steffen
0 Punkte
Beantwortet von mixmax Experte (2.2k Punkte)
p.s. ich habe mal vor einigen jahren eine batch gemacht um einmal ein sauberes Backup ohne gelöschte Dateien enthalten soll aber auch ein je vorheriges Backup mit allen alten Dateien auch die die es nun nicht mehr gibt:




@echo off

REM X:\ ist freigabe am anderen Computer für Backup
X:
cd \

REM Umbennen geht schneller wenn "_old" nicht existiert
IF NOT EXIST web echo "kann verschoben werden.."
IF NOT EXIST web_old ren web web_old

REM umkopieren und überschreiben
REM (zusammenführen von web und web_old)
IF EXIST web echo "Muss kopiert werden.."
IF EXIST web xcopy web web_old /e /v /c /i /q /h /r /y
IF EXIST web rd /S /Q web

REM nun ist Web nicht mehr vorhanden, kopieren...
xcopy H:\WebServer X:web /e /v /c /i /q /h /r /y
0 Punkte
Beantwortet von mixmax Experte (2.2k Punkte)
robocopy ist sicher die proffessionellere version, jedoch solange der platz reicht und ich die batch einfach ab und zu ausführe reicht mir das...

die batch hält zudem den sql-server noch an und kopiert den datenbereich und beendet den Teamspeakserver und sichert die Datenbank von dem mit den registrierten benutzern, startet natürlich dann alles wieder.
0 Punkte
Beantwortet von nostalgiker6 Experte (7.1k Punkte)
Hallo und Dank für die Antworten.

Robocopy scheint unter WIN2000 nicht zu laufen - ausserdem stört mich daran, dass ich mir für einen enzigen Zweck anscheinend ein ganzes Paket installieren würde, von dem 97% für mich überflüssig sind.

Ich werde also bei meinem bisherigen Verfahren bleiben - wobei ich schon immer - wie ebenfalls hier vorgeschlagen - die alten Zielordner zunächst umbenenne (wg. #3).

Wenn ich ALLE Zielordner umbenennen würde, könnte es auf der Siocherungsplatte tatsächlich etwas eng werden. Ausserdem liegen diverse Zielordner (mit allerlei UO) in der Root - ob ich sie also alle auf einmal umbenenne oder mal diesen, mal jenen, bleibt sich gleich. Solange ich icht das Gefühl habe, dass sich zu viel Schrott angesammelt hat, ist es ja auch ganz schön, notfalls noch mal auf die alten Sachen zurückgreifen zu können. (Auch wenn das ginge, würde ich deshalb nicht bei jedem Lauf alle verwaisten Dateien löschen lassen.)
0 Punkte
Beantwortet von
hi nostalgiker6,

Ideal wäre ein Parameter, der besagt: "Lösche alle Dateien im ZV, die im QV fehlen."


ich hätte zunächst auch an den "IF"-Befehl gedacht.

Wenn das aber nicht deinen Erwartungen entspricht dann gäbe es vlt. noch eine andere Lösung. Du erstellst mit der Batch bei jedem Backup immer ein neues Zielverzeichnis und löschst das alte Zielverzeichnis anschließend. Alternativ könnte man auch vorher das alte Zielverzeichis umbenennen, dann Kopieren in eine neues Verzeichnis mit dem ursprünglichen Namen und anschließend die Löschung des zuvor umbenannten Verzeichnisses. Es geht aber auch noch anders. Neues ZV anlegen, altes ZV löschen und neu angelegtes ZV so umbenennen wie du es brauchst.

Damit wären dann Quelle und Ziel immer identisch, so wie du das haben willst.

gruss freitage
0 Punkte
Beantwortet von masterofhardness Mitglied (139 Punkte)
zu Antwort 5
robocopy "C:\Users\Steffen\Desktop" \\server\Steffen_kopie\Desktop /mir /fft
Wozu dient der Schalter /fft? Ich werde aus der Hilfe (robocopy /?) nicht schlau.

zu Antwort 8
Es reicht völlig, wenn du dir die robocopy.exe lädst. Den ganzen Rest kannst du dir in der Tat sparen. Hier gibts noch eine ausführliche Beschreibung.
...