Zum Inhalt wechseln


Foto

Robocopy für mehrereVerzeichnisse


  • Bitte melde dich an um zu Antworten
16 Antworten in diesem Thema

#1 Primaerplan

Primaerplan

    Newbie

  • 16 Beiträge

 

Geschrieben 05. März 2017 - 18:13

Hallo Scriptingexperten,

 

Ich möchte ein größeres Verzeichnis mit einer wechselnden Anzahl von Unterverzeichnissen auf mehrere Festplatten sichern.

 

Da das gesamte Verzeichnis nicht auf eine HD passt, teile ich es auf mehrere HD auf.

 

Zu diesem Zweck kopiere ich momentan mittels Robocopy die einzelnen Unterverzeichnisse per Batch.

 

z.B.:

robocopy /m /purge "\\Freigabe\A-Verzeichnis .\Sicherung\

robocopy /m /purge "\\Freigabe\B-Verzeichnis .\Sicherung\

robocopy /m /purge "\\Freigabe\C-Verzeichnis .\Sicherung\

...

 

Dieser Batch liegt angepasst im Wurzelverzeichnis einer jeden Sicherungsfestplatte und wird von dort gestartet.

 

Leider ist er mir zu unflexibel, da die Unterverzeichnisse sich ständig ändern.

 

Ich suche also eine Möglichkeit, Robocopy z.B. die Unterverzeichnisse von A* bis E* zu sichern, die direkt im Haupt-Verzeichnis \\Freigabe ebenfalls befindlichen Dateien aber auszuschließen.

 

Bei den Robocopy-Optionen finde ich aber keine Möglichkeit _Verzeichnisse_ per Wildcard zu definieren.

 

Ich hoffe, mein Anliegen ist klar und es gibt hierzu eine Lösung.

 

Vielen Dank für Eure Bemühungen.

 

Gruß, Primärplan



#2 testperson

testperson

    Board Veteran

  • 4.334 Beiträge

 

Geschrieben 05. März 2017 - 19:23

Hi,

 

warum nicht einfach Backup-Medien in passender Größe verwenden?

Um was für / wie viele Daten geht es denn? Ist das dein einziges Backup oder ein "zusätzliches"?

 

Gruß

Jan


  • nesterdron gefällt das
Good morning, that's a nice TNETENNBA!

#3 Primaerplan

Primaerplan

    Newbie

  • 16 Beiträge

 

Geschrieben 05. März 2017 - 20:06

Hi,

 

warum nicht einfach Backup-Medien in passender Größe verwenden?

Um was für / wie viele Daten geht es denn? Ist das dein einziges Backup oder ein "zusätzliches"?

 

Gruß

Jan

 

Hallo Jan,

 

zu 1: weil es so große Festplatten nicht gibt. :-)

 

Ich möchte hier keine Diskussion über das für und wieder verschiedener Backup-Stategien machen:

für meinen Zweck ist die Sicherung per Robocopy passend und ausreichend.

 

Ich suche lediglich eine Möglichkeit, Verzeichnisse per Batch mittel Robocopy & Wildcards zu sichern.

Robocopy verwende ich, da es vorhanden ist, batchfähig ist und vorhandene Dateien überspringt.

 

zu 2:

Es handelt sich um ein Verzeichnis von ca. 50TB welches auf mehrere externe Festplatten kopiert werden muss.

Jede Festplatte erhält einen definierten Bereich; z.B. A*-E*; F*-H*; ...

 

Das Problem hierbei ist, dass ständig neue Verzeichnisse hinzukommen, was die Pflege des Batches aufwendig macht.

 

 

Gruß, Primärplan


Bearbeitet von Primaerplan, 05. März 2017 - 20:21.


#4 BOfH_666

BOfH_666

    Junior Member

  • 118 Beiträge

 

Geschrieben 05. März 2017 - 20:21

So kannst Du mit Powershell die Anfangsbuchstaben der Unterverzeichnisse des von Dir anzugebenden Verzeichnisses ermitteln ... und dann weiterbenutzen, wie Du möchtest ...

Get-ChildItem -Directory -Path 'Dein Startverzeichnis' | Select-Object -Property Name,@{Name='Initial';Expression={$_.Name.Substring(0,1).ToLower()}}

live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#5 Sanches

Sanches

    Newbie

  • 417 Beiträge

 

Geschrieben 05. März 2017 - 20:25

Hi,

 

zum Fall zunächst selbst: Versuchs doch mal mit jew. Exclusions.

D.h. du willst A-E sichern, dann excludiere einfach die restlichen Verzeichnisse:

robocopy ... /XD f* g* h* i* j* k* l* ...

Prinzipiell sehe ich es aber wie Jan.

Auch wenn du es nicht hören möchtest, wäre es evtl. mal eine Überlegung, die Strategie so zumindest zu überdenken.

Was machst du denn, wenn in deinem Bereich (z.B. A-E) plötzlich solch ein Zuwachs an Daten herscht, das diese nicht mehr, trotz Aufteilung, dann auf dein Medium passt.

Dann musst du wieder eingreifen und neu verteilen.

 

Gruß Sebastian



#6 lefg

lefg

    Expert Member

  • 20.393 Beiträge

 

Geschrieben 05. März 2017 - 22:20

Moin,

 

etwas abseits der eigentlichen Fragestellung: Warum wird als Quelle die Freigabe adressiert?

 

Ich halte das für keine gute Praxis, das OS greift so über das Netzwerk auf den eigenen Rechner zu.


Weiter meine ich, für das Kopieren der Unterverzeichnisse fehlt die Option /S

 

Siehe mal robocopy /?


Das Messbare messen, das Nichtmessbare messbar machen. Galilei.

 

Diskutiere nicht mit ***en, denn sie ziehen dich auf ihr Niveau und schlagen dich dort mit Erfahrung! (Hab ich bei Tom abgeguckt)

 

Koinzidenz begründet keine Korrelation und ist kein Beweis für Kausalität. (Hab ich bei Daniel abgeguckt) https://de.wikipedia...rgo_propter_hoc

 

Absolutistischer“ Geschäftsführungs-Dogmatismus, der jedwede Empirie aus der „Werkstatt“ schlichtweg ignoriert , führt eben zumeist früher als später ….  (Hab ich von Klabautermann)


#7 Primaerplan

Primaerplan

    Newbie

  • 16 Beiträge

 

Geschrieben 05. März 2017 - 22:56

@BOfH_666:

interessanter Ansatz, aber ich denke Sebastians Ansatz könnte etwas direkter sein.

 

@Sebastian:

guter Ansatz über den Ausschluss zu gehen; wär ich nicht drauf gekommen :-)

Die Speicherkapazität ist kein Problem, ist großzügig bemessen.

Eine mögliche Umverteilung ist aber ggf. kein Problem.

Außerdem muss die Lösung "narrensicher" sein; USB-Festplatte anschließen, Batch starten, fertig :-)

 

 

@lefg:

Die Freigabe ist notwendig, da der Server nicht der lokalen Rechner ist.

/S ist bekannt aber nicht notwendig, da in dem zu sichernden Unterverzeichnis keine tieferen Ebenen sind.

 

 

Danke für Eure Unterstützung


Bearbeitet von Primaerplan, 05. März 2017 - 23:03.


#8 testperson

testperson

    Board Veteran

  • 4.334 Beiträge

 

Geschrieben 06. März 2017 - 07:12

Außerdem muss die Lösung "narrensicher" sein; USB-Festplatte anschließen, Batch starten, fertig :-)

Wie "narrensicher" ist denn der Restore?

Im Worst-Case mal eben 50TB von x USB Platten auf einen neu zu installierenden und einzurichtenden Server kopieren..

 

Ist das ganze privat? Beruflich (für einen Kunden)?


Good morning, that's a nice TNETENNBA!

#9 Primaerplan

Primaerplan

    Newbie

  • 16 Beiträge

 

Geschrieben 06. März 2017 - 18:47

OK, es artet in eine Grundsatzdiskussion aus :-)

 

Also mal zur Klarstellung:

 

Die 50TB sollen nicht gebackupt werden (werden sie anderweitig), sondern müssen zwecks Weiterverarbeitung 2-3x Jährlich auf externe Festplatten mit definierten Bereichen kopiert werden. Hierbei muss die normale Ordner-/Dateistruktur erhalten bleiben.

 

Da ca. 80% gleich bleibt, und robocopy sowohl die in \\Freigabe nicht mehr vorhandene Daten in der Sicherung entfernt als auch identische Dateien überspringt ist das Ganze recht effizient.

 

Mein Robocopy-Batch macht seinen Job ganz hervorragend, ist mir halt nur zu unflexibel.

(Mir ist in der Vergangenheit schon passiert, dass ich das eine oder andere neue Verzeichnis übersehen habe)

 

 

@Sebastian:

Dein Ausschlussverfahren funktioniert, hat aber noch einen Nachteil.

 

Wenn ich mit:

> robocopy /m /purge /s \\Freigabe .\Sicherung /XD  F* [...] Y* Z*

arbeite, werden auch die Dateien die sich im \\Freigabe-Wurzelverzeichnis befinden mitkopiert; gewünscht wäre hier lediglich alle in \Freigabe befindlichen _Verzeichnisse_, die mit A-E beginnen.

 

Wenn es jetzt noch einen Weg gäbe die Dateien auszuschließen, wäre es perfekt.

 

Gruß, Primärplan 


Bearbeitet von Primaerplan, 06. März 2017 - 19:04.


#10 Sanches

Sanches

    Newbie

  • 417 Beiträge

 

Geschrieben 06. März 2017 - 20:18

Hi,

 

mittels

/XF *    oder   /XF *.mp3

kannst du Dateien entsp. ausschließen.

Siehe auch

robocopy /?

Gruß Sebastian



#11 Esta

Esta

    Board Veteranin

  • 1.271 Beiträge

 

Geschrieben 06. März 2017 - 20:30

Hi,

 

und wenn du mit Variablen und einer For-Schleife arbeitest?


Gruß Esta

:D Ich liebe Herausforderungen. :D

Was wäre das Leben, hätten wir nicht den Mut, etwas zu riskieren.
Vincent van Gogh

#12 Primaerplan

Primaerplan

    Newbie

  • 16 Beiträge

 

Geschrieben 06. März 2017 - 22:24

@Sebastian:

Damit schließe ich aber doch auch alle gematchten Dateien innerhalb der Unterverzeichnisse mit aus; ich möchte aber nur die Dateien, welche sich im Hauptverzeichnis befinden nicht mitsichern.

 

@Esta

Würde ich gerne machen, nur bin ich leider kein Batch-Spezialist.

Ich batche nur minimalst & rudimentär für den Hausgebrauch, deshalb ja auch meine Anfrage hier.

 

(rotwerd) Ich habe noch nicht mal ansatzweise verstanden, was  BOfH_666 oben mit seinem Codeschnipsel genau bewirkt :-)

 

Gruß, Primärplan


Bearbeitet von Primaerplan, 06. März 2017 - 22:26.


#13 BOfH_666

BOfH_666

    Junior Member

  • 118 Beiträge

 

Geschrieben 07. März 2017 - 07:00

 

 

(rotwerd) Ich habe noch nicht mal ansatzweise verstanden, was  BOfH_666 oben mit seinem Codeschnipsel genau bewirkt :-)

 

 

... Probieren geht über Studieren. Versuch's einfach mal - es geht bestimmt nix kaputt.   ;)  :cool:  :thumb1:  :jau:


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#14 Sanches

Sanches

    Newbie

  • 417 Beiträge

 

Geschrieben 07. März 2017 - 07:19

Sollte der Ansatz von BOfH_666 nicht klappen,

würde ich die Dateifilterung ganz weglassen und (wie bereits von Esta geschrieben) einfach pro Bereich eine FOR-Schleife direkt für die jew. Verzeichnisse laufen lassen.

Innerhalb der FOR-Schleife kannst du ja dann mittels robocopy deine Daten kopieren.

 

Nur mal als Ansatz ein Beispiel:

FOR /D %%i in (A* B*) DO (
 echo kopiere Verzeichnis %%i
 robocopy ...
)

Parameter und Beispiele für die FOR-Schleife solltest du im Internet genügend finden.

 

Gruß Sebastian


Bearbeitet von Sanches, 07. März 2017 - 07:20.


#15 Esta

Esta

    Board Veteranin

  • 1.271 Beiträge

 

Geschrieben 07. März 2017 - 10:11

 

(rotwerd) Ich habe noch nicht mal ansatzweise verstanden, was  BOfH_666 oben mit seinem Codeschnipsel genau bewirkt :-)

 

na dann hau rein und lerne die Grundlagen.


Gruß Esta

:D Ich liebe Herausforderungen. :D

Was wäre das Leben, hätten wir nicht den Mut, etwas zu riskieren.
Vincent van Gogh