Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Verzeichnisse für Datensicherung aufteilen

Frage Sicherheit Backup

Mitglied: StrgAltEntf

StrgAltEntf (Level 1) - Jetzt verbinden

10.01.2007, aktualisiert 13.01.2007, 4125 Aufrufe, 6 Kommentare

für Sicherung auf DVD

bei uns werden regelmäßig kleinere aber auch größere Sicherungen von Userdaten auf DVD gemacht. Dabei wird das von den Usern vorgegebene Verzeichnis komplett auf DVD gebrannt.
Wenn die Verzeichnisse aber größer sind als eine DVD müssen wir jedesmal die Daten aufteilen.

Ich suche ein Programm welches mir automatisch ein vorgegebenes Verzeichnis in 4,5Gb oder 700MB große unterteilt.
Wichtig ist das die Daten nicht als Backupdatei sondern als Verzeichnisse gesichert werden damit die User ohne Zusatzsotware wieder auf die Daten zugreifen können.
Mitglied: bastla
12.01.2007 um 00:20 Uhr
Hallo StrgAltEntf!

Quasi als Abfallprodukt einer anderen Anforderung hier im Forum könnte ich folgende Bastel-Lösung als Batch anbieten:
01.
@echo off & setlocal 
02.
set SourceDir="%1" 
03.
if %SourceDir% neq "" goto :DoIt 
04.
echo Bitte beim Aufruf den zu sichernden Ordner angeben! 
05.
echo Beispiel: %~nx0 "D:\Alle meine Daten" 
06.
pause > nul 
07.
goto :eof 
08.
:DoIt 
09.
set TempDir=D:\Backup 
10.
set Pattern=*.* 
11.
set LogOK=D:\BackupOK.txt 
12.
set LogError=D:\BackupError.txt 
13.
::Kapazitätsgrenze in Bytes 
14.
set Max=700000000 
15.
::Alte Logdateien löschen 
16.
if exist "%LogOK%" del "%LogOK%" 
17.
if exist "%LogError%" del "%LogError%" 
18.
::Temp-Ordner leer anlegen 
19.
if exist "%TempDir%" rd /s /q "%TempDir%" 
20.
md "%TempDir%" 
21.
::Quelldateien in Temp-Verzeichnis kopieren 
22.
copy %SourceDir%\%Pattern% %TempDir% 
23.
::Zur einfacheren Verarbeitung in Temp-Verzeichnis wechseln 
24.
pushd %TempDir% 
25.
::Mit Unterverzeichnis Nr 1 beginnen 
26.
set /a Teil=1 
27.
::Summe der (bisher enthaltenen) Dateigrößen auf 0 setzen 
28.
set /a Bytes=0 
29.
::Unterverzeichnis 1 erstellen 
30.
md %Teil% 
31.
echo Erstelle Verzeichnis %Teil% 
32.
::Alle Dateien des Temp-Verzeichnisses eínzeln aufrufen und überprüfen 
33.
for %%f in ("*.*") do call :Check "%%f" 
34.
::Statistik für die fertigen Unterverzeichnisse 
35.
echo ===================================== >> %LogOK% 
36.
for /f %%f in ('dir /b /ad') do for /f "tokens=3" %%s in ('dir %%f /c ^| findstr /C:"Datei(en)"') do echo Verzeichnis %%f - %%s Bytes >> %LogOK% 
37.
::Falls Dateien im Temp-Verzeichnis verblieben sind, diese mit Dateigröße im ErrorLog anführen 
38.
if not exist *.* goto :eof 
39.
echo Nicht aufgeteilt: >> %LogError% 
40.
for /f %%f in ('dir /b /a-d') do echo %%~zf;%%f >> %LogError% 
41.
popd 
42.
::Fertig. 
43.
goto :eof 
44.
:Check 
45.
::Neue Gesamtdateigröße des aktuellen Unterverzeichnisses ermitteln 
46.
set /a Bytes=%Bytes%+%~z1 
47.
::Wenn Max-Kapazität noch nicht überschritten: 
48.
::  Datei in aktuelles Unterverzeichnis verschieben 
49.
if %Bytes% leq %Max% goto :MoveIt 
50.
::Wenn Datei > Max-Kapazität: 
51.
::  Gesamtdateigröße auf alten Stand korrigieren und Datei im Temp-Verzeichnis belassen 
52.
if %~z1 gtr %Max% (set /a Bytes=%Bytes%-%~z1) & goto :eof 
53.
::Neues Unterverzeichnis erstellen 
54.
set /a Teil+=1 
55.
md %Teil% 
56.
echo Erstelle Verzeichnis %Teil% 
57.
set /a Bytes=%~z1 
58.
:MoveIt 
59.
::Datei in aktuelles Unterverzeichnis verschieben und Log schreiben 
60.
move %1 %Teil% > nul && echo %Teil%;%~1 >> "%LogOK%" || echo %~1: Fehler beim Verschieben nach %Teil% >> "%LogError%" 
61.
goto :eof
Vorweg die Einschränkungen: Es wird immer nur ein Verzeichnis (nicht dessen Unterverzeichnisse) bearbeitet und es erfolgt keinerlei Optimierung (hinsichtlich Ausnutzung der CD/DVD-Kapazität).

Zum Ablauf:
Dem Batch ist das Quellverzeichnis als Argument zu übergeben (auch per Drag & Drop möglich), oder Du änderst die Zeile set SourceDir="%1" auf die Angabe eines konkreten Pfades, also zB set SourceDir="D:\Alle meine Daten". Weitere Pfad- / Dateiangaben für das Temporäre Verzeichnis (in dem zuerst die einzelnen Dateien und danach die Unterverzeichnisse für die Aufteilung abgelegt werden) und die Log-Dateien musst Du an Deine Gegebenheiten anpassen, ebenso die Kapazitätsgrenze "Max". (Anmerkung zum vorgeschlagenen Wert: Bei Umrechnung der nominellen Kapazität einer CD mit 700 MB ergeben sich 700 * 1024 * 1024 = 734.003.200 Bytes, daher sind bei Max=700000000 Reserven für das CD-Dateisystem vorhanden. Werden viele sehr kleine Dateien gesichert, müsste man den Max-Wert eventuell noch niedriger ansetzen.)

Zunächst werden die Dateien aus dem Quellverzeichnis in das Temp-Verzeichnis kopiert und dort dann einzeln auf ihre Größe überprüft und in aufsteigend nummerierte Unterverzeichnisse verschoben. Passt (hinsichtlich der Kapazitätsgrenze "Max") die Datei noch in das aktuelle Unterverzeichnis, wird sie verschoben und mit Unterordner-Nr und Dateiname in das OK-Log eingetragen (sollte beim Verschiebevorgang ein Fehler auftreten, wird dies im Error-Log vermerkt). Ist die Datei größer als der "Max"-Wert (und würde daher ohnehin nicht auf eine CD passen), bleibt sie im Temp-Ordner (alle verbliebenen Dateien werden am Ende der Verarbeitung ins Error-Log geschrieben). Ist die Datei nur für das aktuelle Unterverzeichnis zu groß, wird ein Neues angelegt und die Datei in dieses verschoben.

Am Ende der Verarbeitung werden die Logs ergänzt: Für alle erstellten Unterverzeichnisse wird die Gesamtgröße der enthaltenen Dateien ermittelt und im OK-Log vermerkt, zu große Dateien (siehe oben) werden in das Error-Log eingetragen.

Um während des Vorganges dem Benutzer ein wenig Feedback zu geben, lasse ich beim "copy"-Befehl die einzelnen Dateien (wenn nicht gewünscht, > nul anfügen) und jeweils beim Erstellen eines Unterverzeichnisses eine kurze Information anzeigen.

Falls Dir dieses Script ein wenig die Arbeit erleichtert, würde mich das freuen.

Grüße
bastla
Bitte warten ..
Mitglied: StrgAltEntf
12.01.2007 um 00:24 Uhr
leider hilft mir das nicht weiter....
Es werden teilweise Pfadtiefen von 20 Ebenen erreicht und die Dateigrößen schwanken zwischen 1Kb und 2GB bei einer Anzahl von meist mehreren tausend Dateien

trotzdem Danke
Bitte warten ..
Mitglied: Biber
12.01.2007 um 00:35 Uhr
Na ja...

wir haben hier (Forumssuche) auch ein paar native Batch-Beispiele zur Ermittlung einer DirSize eines Unterverzeichnes incl. der Unterordner.

Das ließe sich sicherlich noch vorschalten vor das eigentliche XCopy.

Andererseits... zwei Nachfragen halten mich davon ab, hier weiterzuskripten:

- es wäre dann wahrscheinlich sinnvoller, den Krempel in VBS (oder besser) abzufackeln aus Performance-Gründen
- und, viel wichtiger: seid ihr sicher, dass ihr Eure Prozesse sinnvoll definiert bzw in den letzten Jahren überprüft habt?

Wenn es zu einer derartigen Anforderung kommen kann, ist IMHO irgendetwas aus dem Ruder gelaufen.

So ein Gesamtdatenklumpen von (siehe oben), den alle User benötigen... hmmmm.
Kann ich kaum glauben. Wie ist es dazu gekommen?

Grüße
Biber
[Edit] @bastla
Biber weiß das sicher auf 2 Kommastellen genau
Jein in diesem Fall.
Die handlebare Pfadlänge schwankt schon bei unterschiedlichen M$-Utilitities (zum Kopieren, Moven, Rechte setzen) zwischen 251 und 256 Zeichen.
Wenn das Ganze noch auf CDFS-Struktur gepresst werden soll, sind es ohnehin max. 250, wenn Du auf der sicheren Seite sein willst.
Wenn aus Versehen noch Umlaute in Datei- oder Verzeichnisnamen sind, darfst Du nochmal ein paar Zeichen abziehen.
Bleiben als (meine empfohlene) Kompatibilitäts-Schmerzgrenze ca 220. Zeichen als unkritische Länge.
Die Anzahl der Verzeichnisebenen spielt nur eine untergeordnete Rolle - an die Grenze kannst Du nicht stossen... weil vorher alles wegen der Pfadlänge crasht...
[/Edit]
Bitte warten ..
Mitglied: bastla
12.01.2007 um 00:37 Uhr
Hallo StrgAltEntf!

Es werden teilweise Pfadtiefen von 20 Ebenen erreicht und die Dateigrößen schwanken zwischen 1Kb und 2GB bei einer Anzahl von meist mehreren tausend Dateien
Ich hätte das Script sowieso geschrieben (sportlicher Ehrgeiz), auch wenn Du diese Information schon etwas früher angebracht hättest

Ganz nebenbei: Lassen sich 20 Verzeichnisebenen eigentlich noch vernünftig handeln? Im Hinterkopf habe ich auch noch eine Beschränkung der Pfadlänge (auf unter 256 Zeichen - Biber weiß das sicher auf 2 Kommastellen genau ) unter DOS/Batch

Grüße
bastla

[Edit] @Biber - Ah, schon da ... [/Edit]
Bitte warten ..
Mitglied: StrgAltEntf
12.01.2007 um 08:59 Uhr
Die Daten werden nicht von allen Usern gebraucht sondern nur von bestimmten Projektgruppen. Es geht hier um die Entwicklung von Auto-Multimediageräten. Die Sicherung ist für ältere Daten gedacht die auf den Servern "rumgammeln". Beim händischen kopieren auf unseren "Brennrechner" bin ich auch schon öfter an die Pfadgrenze gestoßen....
Bitte warten ..
Mitglied: miniversum
13.01.2007 um 18:37 Uhr
Also wenn das ganze noch mit den entsprechenden unterverzeichnissen geht könnt ich das ganze Ding auch noch gebrauchen (Zwar ncith dringen aber als Spielerei).

Das die Verzeihnissstruktur wo anders erstellt wird bekomme ich sogar auch noch hin, aber das ganze zusammenzubauen zu einem da bleib ich irgentwo hängen.

miniversum
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...