Robocopy Eine Quelle - Mehrere Festplatten
Hey,
ich versuche gerade mit Robocopy ein Backup durchzuführen.
Ich habe ein RAID-System mit 5 TB Speicherplatz. Von diesem RAID-System soll Robocopy ein Backup auf 6 (einzelne) 1 TB Festplatten durchführen.
Ist das möglich? Wenn ja, wie kann man das umsetzen?
Oder was gibt es für andere Möglichkeiten?
Danke.
LG
user002
ich versuche gerade mit Robocopy ein Backup durchzuführen.
Ich habe ein RAID-System mit 5 TB Speicherplatz. Von diesem RAID-System soll Robocopy ein Backup auf 6 (einzelne) 1 TB Festplatten durchführen.
Ist das möglich? Wenn ja, wie kann man das umsetzen?
Oder was gibt es für andere Möglichkeiten?
Danke.
LG
user002
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 190668
Url: https://administrator.de/forum/robocopy-eine-quelle-mehrere-festplatten-190668.html
Ausgedruckt am: 22.12.2024 um 11:12 Uhr
11 Kommentare
Neuester Kommentar
Wie sieht denn deine Ordner-Struktur im Quellverzeichnis aus?
Am einfachsten wäre ggfs. wenn du für jede Platte einen eigenen Robocopy-Job erstellst.
Sowas wie
Erster Job: "Ordner 1-5", dann Platte wechseln
Zweiter Job: "Ordner 6-10", dann Platte wechseln
...usw.
Geht natürlich nur wenn deine Ordner-Struktur in der Quelle sowas zulässt.
Vielleicht geht's auch noch eleganter, aber so würde ich es jetzt auf die Schnelle machen.
Am einfachsten wäre ggfs. wenn du für jede Platte einen eigenen Robocopy-Job erstellst.
Sowas wie
Erster Job: "Ordner 1-5", dann Platte wechseln
Zweiter Job: "Ordner 6-10", dann Platte wechseln
...usw.
Geht natürlich nur wenn deine Ordner-Struktur in der Quelle sowas zulässt.
Vielleicht geht's auch noch eleganter, aber so würde ich es jetzt auf die Schnelle machen.
moin,
Das mit dem mehreren Zielen ist kein Problem. Mit dem Zurücksichern wirds eventuell etwas kniffliger.
Da müssten dann 0-byte dateien erstellt werden. Dann ist aber der Ordner-Vorhanden-Check nicht mehr durchführbar.
Hier ist erstmal ein Funktionierendes Script zum Backup auf mehrere Ziele:
Ein Delta ist auch möglich.
Gruß Phil
Das mit dem mehreren Zielen ist kein Problem. Mit dem Zurücksichern wirds eventuell etwas kniffliger.
Da müssten dann 0-byte dateien erstellt werden. Dann ist aber der Ordner-Vorhanden-Check nicht mehr durchführbar.
Hier ist erstmal ein Funktionierendes Script zum Backup auf mehrere Ziele:
Ein Delta ist auch möglich.
@echo off
setlocal
if "%~1" neq "/?" goto :nohelp
echo Erstellt ein Backup oder Restore nach:
for /f "delims=: " %%i in ('findstr /brc:":Ziel[0-9]* *" "%~f0"' ) do (call :%%i
call echo %%i: %%Ziel%%
call echo SNr: %%VolSerial%%
)
exit /b
:nohelp
if "%~1" neq "/A" echo Bitte erst Die Pfade fuers Backup im Batch anpassen.^
&echo Anschliessend "%~n0" mit Option /A starten.&exit /b 1
rem Robocopy auf mehrere Ziele aufteilen
rem Quelle und Dateien fuer Robocopy Festlegen
set "Quelle=D:\Musik"
set "Dateien=*.*"
set "Copytemp=%~dpn0Copytemp.lst"
set "Vergleich=%~dpn0RC-V.txt"
set "NVergleich=%~dpn0RC-Neu-V.txt"
set "Log=%~dpn0RC-log.log"
set "InLog=%~dpn0RC-Inlog.log"
rem Platz fuer Zuwachs in Ordnern. Rest im Speicherort beim ersten Backup lassen. in bytes
rem 500 MB = 536.870.912
rem 1 GB = 1.073.741.824
rem 5 GB = 5.368.709.120
set "Schwelle=5368709120"
goto :Liste
rem Ziele und Volumebezeichner oder Volumeserial von den Split angeben
:Ziel1
rem 1.Ziel
set "Ziel=K:\Backup1"
rem Seriennummer oder Volumebezeichnung
set "VolSerial=38A1-28B2"
exit /b
:Ziel2
rem 2.Ziel
set "Ziel=L:\Test"
set "VolSerial=68BD-C870"
exit /b
:Ziel3
rem 3.Ziel
set "Ziel=\Backup3"
set "Volserial=F44B-A167"
exit /b
:Ziel4
rem 4.Ziel
set "Ziel=\Anderes Zeug\Backup4"
set "Volserial=E435-6A7C"
exit /b
:Ziel5
rem 5.Ziel
set "Ziel=\\fritz.box\Generic-FlashDisk-01\Backup5"
set "Volserial=Generic-FlashDisk-01"
exit /b
:Netzwerk
rem RC-Einstellungen fuers Netzwerk
set "RCopt=/COPY:DT"
exit /b
:Lokal
rem RC-Einstellungen Lokal
set "RCopt="
exit /b
rem Ende Einstellungen
:Liste
if defined TEST echo on
set "Letzte="
set "Lang="
type nul >>"%NVergleich%"
2>nul (for /f "usebackqtokens=1,4*" %%i in ("%~dpn0-Backupset.ini") do (
set /a Ziel#=%%~i
if %%i equ bei set "Letzte=%%k" &set "Lang=%%k"
))
for /f %%i in ('findstr /brc:":Ziel[0-9]* *" "%~f0" ^|find /c /v "" ' ) do set /a MaxZiel=%%i , MaxFile=2*%%i
set /a "MaxFile=2*Maxziel
if not defined Ziel# set /a Ziel#=1
set "token="
set "in=%quelle%"
:tok
set /a Token+=1
for /f "tokens=2*delims=\" %%a in ("%in%" ) do set "In=%%~a" &goto :tok
call :Backupset
rem CopyListe erstellen
set "QPfad=%Quelle%\"
set "ZPfad=\"
set "Daten=%Dateien%"
set "skip="
if not defined Letzte (setlocal enabledelayedexpansion &call :BackupSplit1 /LOG:"%Copytemp%" ">nul" /nc /xx /e /L
) else for /f "delims=" %%i in ('cmd /von /c "find /n "!Letzte!" < "!Copytemp!" "') do if not defined Skip set /a skip=%%i-1
if defined skip set "Skip=skip=%skip%" &echo Setze Fort ...&echo(
for /f "%skip% usebackq tokens=*" %%c in ("%Copytemp%" ) do for /f "tokens=%token%* delims=\" %%a in ("%%~dpc" ) do (set "Lang=\%%~b%%~nxc"
set "QPfad=%%~dpc"
set "ZLPfad=\%%~b"
set "Daten=%%~nxc"
setlocal enabledelayedexpansion
for /f "tokens=1-3 delims=?" %%a in ("!QPfad:%%=%%%%!?!ZLPfad:%%=%%%%!?!Daten:%%=%%%%!") do (
endlocal
set "QPfad=%%a"
set "ZPfad=%%b"
set "Daten=%%c"
call :Backupsplit /log+:"%log%" ">nul"
)
set "OF=\%%~b"
)
rem Fertig
del "%~dpn0-Backupset.ini"
echo Backup fertig.
pause
exit /b
:Backupsplit
setlocal enabledelayedexpansion
rem Passt der Ornder noch drauf
:: echo !QPfad!!Daten!
if !OF! equ !ZLPfad! goto :Backupsplit1
set "VG#="
rem VGinL Schwellwertschalter
set "VGinL=1"
for /f "tokens=2delims=?" %%i in ('^( find "?!QPfad!?" ^<"%NVergleich%" ^) 2^>nul ') do set "VGinL=" &if %%i neq %Ziel#% endlocal &set "VG#=1" &set "nach=" &set /a Ziel#=%%i &goto :Setweiter
for /f "tokens=1-3*" %%i in ('robocopy "!QPfad:~0,-1!" "!nach!!ZPfad:~0,-1!" "!Dateien!" /L /bytes /FP /NP' ) do @if %%i equ Bytes: for /f "tokens=3" %%a in ('dir /-c "!nach!\.." ^|findstr /rc:" Verzeichnis(se), *[0-9]* *Bytes frei"' ) do (
if %%k equ 0 goto :Backupsplit1
call :Platz %%a %%k &&echo zu Kopieren ist: %%k&&set "VG=1" ||set "VG="
)
if not defined VG echo Kein Platz mehr ...&endlocal &goto :Backupset
rem VergleichsListe schreiben
find /v "?!QPfad!?" <"%NVergleich%" >"%Vergleich%"
move "%Vergleich%" "%NVergleich%" >nul
:WriteIn
>>"%NVergleich%" echo ?!QPfad!?!Ziel#!
set "VG#="
set "VG="
:BackupSplit1
rem Paramter 2 wird ohne Anfü
robocopy /FP /FFT /njh /njs /np /ns /ndl /r:0 /w:0 "!QPfad:~0,-1!" "!nach!!ZPfad:~0,-1!" "!Daten!" !RCopt! %1 %~2 %3 %4 %5 %6 %7 %8 %9
if errorlevel 9 endlocal &echo anderer Fehler^^! #:%errorlevel% &exit /b
if not errorlevel 1 endlocal &exit /b
if not errorlevel 2 (rem find in der passende Datei
echo !Ziel#! !nach!!Lang!
endlocal
exit /b
)
if not errorlevel 8 endlocal &echo anderer Fehler^^! #:%errorlevel% &exit /b
echo Es steht nicht genug Speicherplatz auf dem Datentr„ger zur Verfgung.^(#8^)
:Backupset
if "%0" equ ":Backupset" goto :Setweiter
rem Rotation mit NextFit fuer Ziele zum Ausnutzen der Kapazitaet
set /a Ziel#=Ziel#%%MaxZiel+1
set "nach="
:Setweiter
call :Ziel%Ziel#%
if not defined nach call :SucheLaufwerk "%ziel%"
setlocal enabledelayedexpansion
echo %Ziel#% = Backupset auf !nach!
echo bei Datei: !nach!!Lang!
echo %Ziel#% = Bezeichnet mit: !Volserial!
(echo %Ziel#% = Backupset auf !nach!
echo %Ziel#% = Bezeichnet mit: !Volserial!
)>>"%log%"
(echo %Ziel#% = Backupset auf !nach!
if defined ZLPfad echo bei der letzten Datei: !ZLPfad!
echo %Ziel#% = Bezeichnet mit: !Volserial!
)1>"%~dpn0-Backupset.ini"
endlocal
if "%0" equ ":Backupsplit" echo Verarbeite Liste ...&goto :Backupsplit
exit /b
:Platz
rem %1 LW %2 Daten
set "LW=%~1"
set "DC=%~2"
rem um ueber ca. 2 GB bis ca. 2 TB zu rechnen
set "LW=%LW:~0,-3%"
set "DC=%DC:~0,-3%"
set "Schwelle=%schwelle:~0,-3%"
if not defined schwelle set /a Schwelle=0
if not defined LW set /a LW=0
if not defined DC set /a DC=0
set /a chk=lw-schwelle
rem VGinL Schwellwert nur beim 1. Backup
if defined VGinL if %chk% lss 0 exit /b 1
if %DC% gtr %chk% exit /b 1
exit /b
:SucheLaufwerk
call :Lokal
set "nach="
rem Vol findet keine Freigaben
rem Dir listet Volume und Seriennummer auch bei Freigaben
for /f "delims=\ " %%i in ('mountvol ^|find ":\" ^|sort ') do dir "%%i\.?." 2>nul|findstr /ec:" %VolSerial%" && set "nach=%%i%~pnx1"
if not defined nach for /f "tokens=1,2delims=\" %%i in ("%~1" ) do dir "\\%%i\%%j\.?." >nul 2>nul &&set "nach=%~1" &&echo Mit Netzwerk verbunden. &&call :Netzwerk
if not defined nach echo Datentraeger %VolSerial% fuer Backup nicht gefunden!^
&&echo Bitte verbinden ...&&pause &&goto :SucheLaufwerk
if "%~1" neq "%nach%" echo Backuppfad wurde angepasst: "%nach%"
if not exist "%nach%" md "%nach%"
echo(
rem Positivliste erstellen
echo Aktualisiere Vergleichsliste
for /f "tokens=1*" %%I in ('robocopy /njs /njh /NDL /fp /e "%nach%" "%Quelle%" "%Dateien%" /L /min:1 /v /NC /bytes ^|findstr /rbvc:"[^1-9:]*0" ' ) do if .%%J neq . for /f "tokens=%token%* delims=\" %%I in ("%%~dpJ" ) do (
setlocal enabledelayedexpansion
if %%~J neq !Folder! (
find /v "?!Quelle!\%%~J?" <"%NVergleich%" >"%Vergleich%"
move "%Vergleich%" "%NVergleich%" >nul
>>"%NVergleich%" echo ?!Quelle!\%%~J?!Ziel#!
)
endlocal
set "Folder=%%~J"
)
rem Schreibe als Index zum Restore 0-byte
echo Aktualisiere Inhalt
robocopy /njs /njh /nfl /ndl /np /fp /r:1 /w:0 /e /XC /Create "%Quelle%" "%nach%" "%Dateien%"
exit /b
:Groesse
rem Nur test
rem Zum Prozentualen Vergleich Kapazität -- Puffer
for /f "tokens=2,3,4 delims=," %%i in (' "WMIC LOGICALDISK get name, size, Volumename, volumeserialnumber " /format:csv ^|findstr ":,[0-9]" ' ) do @echo %%i %%j %%k
Gruß Phil