indie89
Goto Top

BAT Maximale Ordnergroesse fuer xcopy einstellen

Hallo Freunde,

ich sitze momentan in Afrika und arbeite fuer eine NGO. Eine meiner Aufgaben ist es das kleine lokale Netzwerk zu verwalten (6 Clients, ein Server).
Ich habe bereits ein Backupsystem eingerichtet, das bewirkt, dass bei jedem Shutdown der Clients ein automatisches inkrementelles Backup der wichtigsten Dateien, in einen Ordner auf dem Server der den Benutzernamen des Clients und das Datum enthaelt, gemacht wird.
Sicherheitshalber wuerde ich gerne die gebackupten Dateien von Zeit zu Zeit auf CD (oder DVD) brennen, um auch vor unvorhersehbaren Braenden oder Einbruch geschuetzt zu sein.
Jetzt suche ich nach einer moeglichkeit, dass bei jedem server-shutdown (den wir jeden abend durchfuehren) die Client-Backup-Ordner in einen Ordner, zb mit dem namen "CD1", verschoben werden, der aber nicht groesser als 700 mb (oder respektive 4,7 gb) werden darf. Wenn diese groesse ueberschritten wuerde, sollte sich ein neuer Ordner erstellen, "CD2", in den alle weiteren Ordner gespeichert wuerden usw usf. (Es geht mit um das Groessen-System, nicht um die implementierung in den Shutdown prozess). Alles was ich bisher im internet gefunden habe hat sich nur mit dem auslesen, und nicht mit der weiterverwendung der Ordnergroessen befasst.
Die taeglichen Backupgroessen schwanken staendig, da wir ja nur die veraenderten dateien backupen, kann aber gut mal 200mb betragen. Ausserdem sind hier in Afrika alle Technologie-Ressourcen ein bisschen knapper und teurer, so auch Rohlinge.
Theoretisch sind die 700mb ordner nur spielerei, da ich genausogut auch die groesse per hand auslesen und auf cd brennen koennte, ich moechte das ganze system aber so einfach und automatisch wie moeglich gestalten, da ich in 6 monaten wieder in Deutschland wohnen werde und man ja nie wissen kann, wer nach mit verantwortlich sein wird.
Ich bin mir sicher, dass es Leute gibt, die mir, als eher programmierunwissenden, relativ einfach helfen koennen, vielen Dank schonmal im Vorraus.

Liebe Gruesse
Philipp

Content-Key: 104675

Url: https://administrator.de/contentid/104675

Printed on: April 24, 2024 at 21:04 o'clock

Member: StefanKittel
StefanKittel Dec 23, 2008 at 23:40:40 (UTC)
Goto Top
wie wäre es mit einem Backupprogramm?
Muss ja nicht gleich BackupExec sein.

Kombiniert mit einer externen Festplatte die Jemand mit nach Hause nimmt.

Stefan
Member: indie89
indie89 Dec 24, 2008 at 08:18:09 (UTC)
Goto Top
Hey Stefan,

Danke fuer deine Antwort. Backupprogramm klingt langweilig...nee im ernst...ich bin jetzt mit dem bat backup schon so weit vorgedrungen und es fehlt nur noch das letzte sahnehaeubchen, deswegen frage ich ja auch. Externe Festplatte ist natuerlich drin, ich habe diese moeglichkeit auch schon mit den obersten verantwortlichen durchgesprochen, allerdings ist es so, dass man, wenn die festplatte kaputt oder verloren geht alle daten verliert, wenn eine cd kaputt oder verloren geht, nur deren inhalt. Ich baue momentan noch auf eine batch loesung, wenn es die gibt...
gruss philipp
Mitglied: 60730
60730 Dec 25, 2008 at 12:10:38 (UTC)
Goto Top
Servus und frohes Fest,

an deiner Stelle würde ich mir folgende Freeware besorgen:

  • 7Zip
  • mkisofs

Damit kannst du nicht nur dafür Sorgen, daß deine "Backups" auch einigermaßen Sicher sind - Stichwort Passwortgeschütztes Zip, sondern auch dafür Sorge Tragen, das ein Zip immer max 700 MB Groß ist.

Aber ganz im Ernst - ein Sahnehäubchen ist ganz sicher nicht das Backuppen von Daten auf eine CD.

Wenn das "CD Bruzeln" auch ein Backup sein soll, dann mußt du auch dafür Sorge tragen, daß die CDs mit minimalstem Speed gebrannt werden, alles was hoch/höher ist - erzeugt Fehler, die sich böse rächen können, wenn die CD dann mal etwas älter ist.

Gruß und denk wirklich nochmal darüber nach, ob CD eine "echte" Backuplösung sein kann.
In meinen durch Erfahrung geprägten Augen sind CDs max. eine zusätzliche Sicherungsmöglichkeit, niemals die einzige.
Wer kennt noch die Goldenen Rohlinge? - und wer hat noch einen, der auch noch lesbar ist?

Gruß
Member: kx-one
kx-one Jan 10, 2009 at 22:59:20 (UTC)
Goto Top
Hallo alle zusammen,

ich bin ebenfalls auf der Suche nach einer Möglichkeit möglichst per batch ordner zu "portionieren" z.B. in 4300MB Parrts für DVDs. Eine Archivierung der Daten zwecks Aufteilung und Verschlüsselung kommt nicht in Frage da auf jedes Medium einzeln Zugriff bestehen soll. Zur Verschlüsselung dienen Truecrypt-Container.
Das ganze soll weniger als Backuplösung dienen, eher dem Mobilen Datentransport ohne HDD.
Ich habe mich im Forum auch schon etwas umgeschaut und einige Beiträge gefunde, allerdings war nich wirklich etwas brauchbares dabei, selbst google spuckt nix gescheites zu dem Thema aus face-sad

Also hab ich mal angefange mir Gedanken um einen Lösungsansatz zu machen und bin soweit gekommen das es doch nich so schwer sein dürfte eine Liste der Dateien zu erstellen z.B. per "dir "Pfad" /s /b>dateiliste.txt". Nun müssten theoretisch noch die Größen der Dateien ermittelt werden, zu den jeweiligen Eintrag in der Dateiliste.txt dazugeschrieben werden und anschließen könnte man die Einträge bis zu einer bestimmten Wert addieren und die dazugehörigen bis zu diesem Eintrag in eine neue .txt schreiben um sie anschließend per xCopy zu kopieren. Natürlich müssten vorher noch die Größen der Dateien entfernt werden... Irgendwo hier im Forum hab ich einen ähnlichen Ansatz von Bieber gelesen, allerdings hat mich der Thread nicht wirklich weitergebracht.
Bis zum Erstellen der Liste ist das Ganze ja soweit kein Problem aber danach wirds problematisch, wie kann ich die Liste abarbeiten, also jede Datei auf ihre Größe prüfen und diese dann in die Liste eintragen und z.B: durch | vom Pfad trennen. Die Addition der Größen sollte kein Problem darstellen und die Unterbrechung für den Limit Wert würde ich per if else lösen.

Eine andere Möglichkeit wäre die Liste per xcopy abzuarbeiten und beim auftreten eines errors beim zugehörigen Eintrag eine Marke setzen bei welcher der Kopiervorgang für Medium 2 forgesetzt wird, nur hab ich leider keine Ahnung wie ich das realisieren soll...

Hat jemand eine Idee wie man diese Problem lösen könnte? Ich habe solangsam wirklich Interesse an der Sache da sämtliche Threads die sich um das Thema leider fast immer mit den Beiträgen versuchs mal mit 7zip etc. enden...Allerdings kommt diese Lösung aus obig genannten Gründen leider nicht in Frage.
Geruhsamen Abend noch,
kxone
Member: indie89
indie89 Jan 13, 2009 at 20:31:00 (UTC)
Goto Top
ich arbeite an einer lösung und bin nah dran, was fertigzustellen...ich werde dann die datei wenigstens mal auszugsweise posten...geht eigentlich alles ganz gut mit batch, was ich mir vorgenommen hab, hat jetzt allerdings etwas gedauert...^^
Liebe Grüße
Philipp
Member: kx-one
kx-one Jan 14, 2009 at 10:28:36 (UTC)
Goto Top
Hallo Indie, schön das du noch Interesse hast, ich hab inzw eine Lösung fertig, auch wenn es nicht perfekt sein mag gehts über einen kleinen Umweg mit Robocopy /MIR /B kopier ich die Dateien aus verschlüsselte Laufwerk, was einfach ausgebunden und gebrannt wird wenn die Laufwerksgröße 60 Sekungen nicht mehr ansteigt / sich ändert. Dann wird das Laufwerk wieder eingebunden, alle Daten gelöscht und der nächste Happen kopiert bis das ganze wieder von vorne losgeht. Ein deutlicher Nachteil ist allerdings das du die Verzeichnissstruktur neu aufs Ziel spiegeln musst bevor Robocopy wieder die Arbeit aufnimmt und du somit u.U. eine Menge leerer Verzecihnisse auf der Kopie hast. Aber ich denke dafür sollte sich auch eine Lösung finden lassen.
Das ganze setzt natürlich ein Laufwerk vorraus, welches natürlicherweise nur max DVD Größe hat (in meinem Fall der Truecrypt Container mit 4,3 GB damit noch eine paar MB für Batches zum einbindens des Containers unterwegs.
Ich weiß die Lösung ist nicht wirklich sauber, und ich bin gerne für eine andere Variante offen ohne den Umweg über Robocopy /B /MIR der mir etwas missfällt...
Wenn du Interesse hast kann ich die Tage ne überarbeitete Version posten.
Greetz kxone
Member: kx-one
kx-one Jan 16, 2009, updated at Oct 18, 2012 at 16:37:37 (UTC)
Goto Top
n'Abend,
mir is in diesem Post ein Batch von Biber aufgefallen was sich ganz gut für unsre Zwecke umbaun lassen müsste. Was meint ihr dazu?
MfG kxone
Member: indie89
indie89 Jan 18, 2009 at 16:44:59 (UTC)
Goto Top
hey,
weiß jetz net ganz genau, was das mit unserer frage zu tun hat...aber ist trotzdem interessant...also nochmals: nicht verzagen, bald ist die datei fertig, sind momentan aber ebenfalls noch am serverumzug und deswegen muss der post noch ein bisschen warten...liebe grüße
Philipp
Member: indie89
indie89 Apr 06, 2009 at 11:33:29 (UTC)
Goto Top
Jetzt endlich mal meine loesung...hab leider keine zeit sie ausfuehrlich zu erklaeren. Kann nur sagen,dass man das Ergebnis der Ordnergroessenberechnung von byte in kilobyte umrechnen muss, weil es sonst in gigabytebereichen rechenprobleme gibt. Werde mich auf nachfrage nochmals naeher zu der loesung aeussern. Mir ist auch bewusst, dass manches vllt ein bisschen umstaendlich ist, macht mir aber ueberhaupt nichts aus, dafuer isses von mir...face-wink
@echo off
set filepath=C:\BackupControl\DVDburn
set CurrentDate=%date:~7,2%-%date:~4,2%-%date:~12,2%
set /p StartDate=<%filepath%\StartDate.txt
set /p DVDnumber=<%filepath%\DVDnumber.txt 
set DVDFolder=W:\DVD%DVDnumber% %StartDate%



:continue
rem------Backup Ordnerinhalt in File TempList.txt----
dir E:\BACKUP\Backup\ /b> %filepath%\TempList.txt
goto copycheck

:copycheck
if not exist "%DVDFolder%" md "%DVDFolder%"  
if exist "E:\BACKUP\Backup\*DAD*" goto DAD  
if exist "E:\BACKUP\Backup\*ADassist*" goto ADassist  
if exist "E:\BACKUP\Backup\*AD*" goto AD  
if exist "E:\BACKUP\Backup\*Projects*" goto Projects  
if exist "E:\BACKUP\Backup\*Treasury*" goto Treasury  
if exist "E:\BACKUP\Backup\*Caisse*" goto Caisse  
if exist "E:\BACKUP\Backup\*Server*" goto Server  
if exist "E:\BACKUP\Backup\*Reception*" goto Reception  
goto end

:DAD
set Username=DAD
findstr /l DAD %filepath%\TempList.txt> %filepath%\1.txt
set /p Folder=<%filepath%\1.txt
set user=E:\BACKUP\Backup\%Folder%
goto sizecheck

:ADassist
set Username=ADassistant
findstr /l ADassist %filepath%\TempList.txt> %filepath%\1.txt
set /p Folder=<%filepath%\1.txt
set user=E:\BACKUP\Backup\%Folder%
goto sizecheck

:AD
set Username=AD
findstr /l AD %filepath%\TempList.txt> %filepath%\1.txt
set /p Folder=<%filepath%\1.txt
set user=E:\BACKUP\Backup\%Folder%
goto sizecheck

:Projects
set Username=Projects
findstr /l Projects %filepath%\TempList.txt> %filepath%\1.txt
set /p Folder=<%filepath%\1.txt
set user=E:\BACKUP\Backup\%Folder%
goto sizecheck

:Treasury
set Username=Treasury
findstr /l Treasury %filepath%\TempList.txt> %filepath%\1.txt
set /p Folder=<%filepath%\1.txt
set user=E:\BACKUP\Backup\%Folder%
goto sizecheck

:Caisse
set Username=Caisse
findstr /l Caisse %filepath%\TempList.txt> %filepath%\1.txt
set /p Folder=<%filepath%\1.txt
set user=E:\BACKUP\Backup\%Folder%
goto sizecheck

:Server
set Username=Server
findstr /l Server %filepath%\TempList.txt> %filepath%\1.txt
set /p Folder=<%filepath%\1.txt
set user=E:\BACKUP\Backup\%Folder%
goto sizecheck

:Reception
set Username=Reception
findstr /l Reception %filepath%\TempList.txt> %filepath%\1.txt
set /p Folder=<%filepath%\1.txt
set user=E:\BACKUP\Backup\%Folder%
goto sizecheck

:Sizecheck
set /p DestSize=<%filepath%\DestSize.txt
for /f "tokens=3" %%d in ('dir "%User%" /-c /s ^2^> nul^| findstr /c:"File(s)" ') do echo %%d> %filepath%\SourceSize.txt  
set /p SourceSize=<%filepath%\SourceSize.txt
if 99999999999 GEQ %SourceSize% set KBSourceSize=%SourceSize:~0,8%
if 9999999999 GEQ %SourceSize% set KBSourceSize=%SourceSize:~0,7%
if 999999999 GEQ %SourceSize% set KBSourceSize=%SourceSize:~0,6%
if 99999999 GEQ %SourceSize% set KBSourceSize=%SourceSize:~0,5%
if 9999999 GEQ %SourceSize% set KBSourceSize=%SourceSize:~0,4%
if 999999 GEQ %SourceSize% set KBSourceSize=%SourceSize:~0,3%
if 99999 GEQ %SourceSize% set KBSourceSize=%SourceSize:~0,2%
if 9999 GEQ %SourceSize% set KBSourceSize=%SourceSize:~0,1%
if 1000 GTR %SourceSize% set KBSourceSize=1
set /a "DirSize=%KBSourceSize%+%DestSize%"  
echo %DirSize% > %filepath%\DestSize.txt
if 4500000 gtr %DirSize% goto copy else goto DVDChange


:DVDChange
xcopy %filepath%\DVDLog\DVD%DVDnumber%.txt "Z:\*.*" /v /c /y  
xcopy %filepath%\DVDLog\DVD%DVDnumber%.txt %Finishdvd% /v /c /y
set /p StartDate=<%filepath%\StartDate.txt
move /y "W:\DVD%DVDNumber% %StartDate%" "W:\DVD%DVDNumber% %StartDate%--%CurrentDate%"  
set FinishDVD="%DVDFolder%--%CurrentDate%\*.*"  
echo %finishdvd%>%filepath%\finishdvd.txt
set /a DVDnumber=%DVDnumber%+1
echo "%DVDnumber%">"%filepath%\DVDnumber.txt"  
set DVDFolder=W:\DVD%DVDnumber% %CurrentDate%
echo %CurrentDate%> %filepath%\StartDate.txt
echo 0 >%filepath%\DestSize.txt
echo 0 >%filepath%\DVDBurnCounter.txt
goto copycheck

:copy
echo %Username%>> %filepath%\"DVDLog"\DVD%DVDnumber%.txt  
echo %date%>> %filepath%\DVDLog\DVD%DVDnumber%.txt
xcopy "%User%\*.*" "%DVDFolder%\%Folder%\*.*" /c /v /r /y /s /i>> "%filepath%\DVDLog\DVD%DVDnumber%.txt"  
echo ****END****>> %filepath%\DVDLog\DVD%DVDnumber%.txt
rd /s /q "%User%"  
del %filepath%\TempList.txt
dir E:\BACKUP\Backup\ /b> %filepath%\TempList.txt
goto copycheck

:end
del /q %filepath%\templist.txt
del /q %filepath%\SourceSize.txt
del /q %filepath%\1.txt
::---DVD Burn Counter---
if not exist %filepath%\DVDBurnCounter.txt echo 0 > %filepath%\DVDBurnCounter.txt
set /p DVDBurnCounter=<%filepath%\DVDBurnCounter.txt
set /a "DVDBurnCounter=%DVDBurnCounter%+1"  
echo %DVDBurnCounter% > "%filepath%\DVDBurnCounter.txt"  
if %DVDBurnCounter% EQU 20 goto DVDChange