Backups mit 7zip
Frei nach dem Prinzip "kein Backup - kein Mitleid" stelle ich Euch eine einfache Methode vor, mit dem freien Komprimierungs-Tool 7zip einfache Backups zu erstellen.
Dabei kann man einfache Backups erstellen - hier geht es aber um Versionierung:
Das bedeutet, man kann ein Haupt-Backup erstellen und dann weitere, die nur die Änderungen enthalten.
Der Charme hierbei ist, dass man beim Wiederherstellen auch die Löschungen beachtet werden.
Das funktioniert dann indem man:
1. die Ursprungs-Version entpackt
2. die Änderungen zum gewünschten Zeitpunkt darüber extrahiert
3. und die gemachten Löschungen auch im Änderungs-Zip enthalten sind
So dass am Ende eine Kopie entsteht,, die exakt dem Inhalt des betreffenden Sicherungspunktes entspricht.
1. Basis Befehle im Beispiel
1.1. Vollbackup
7z a c:\archive.7z c:\ZuSichern
1.2. Differenz:
Beispiel Kommando
7z u c:\archive.7z c:\ZuSichern -ms=off -mx=9 -t7z -u- -up0q3r2x2y2z0w2!c:\diff1.7z
Entschlüsselung der Einstellungen am Ende
Das ist immer eine Kombination aus einem Buchstaben für den entsprechenden Fall und einer Zahl für die Aktion.
FALL:
p - File exists in archive, but is not matched with wildcard.
q - File exists in archive, but doesn't exist on disk.
r - File doesn't exist in archive, but exists on disk.
x - File in archive is newer than the file on disk.
y - File in archive is older than the file on disk.
w - Can not be detected what file is newer (times are the same, sizes are different)
AKTION:
0 Ignore file (don't create item in new archive for this file)
1 Copy file (copy from old archive to new)
2 Compress (compress file from disk to new archive)
3 Create Anti-item (item that will delete file or directory during extracting).
This feature is supported only in 7z format
1.3. Rücksicherung:
7z.exe x c:\archive.7z -oc:\recovery_path\
7z.exe x c:\archive.7z -aoa -y -oc:\recovery_path\
-aoa Overwrite All existing files without prompt.
-y (assume Yes on all queries) switch
2. Scripte zur Automatisierung
2.1. Differenzielles Backup
Dieses Script ist dazu gedacht, Backups in einen dafür vorgesehenen Ordner zu machen.
(im Beispiel set BF=D:\\backup03\MISC-Backup\7z)
Beim ersten Mal wird ein Vollbackup gemacht.
Bei jeder weiteren Ausführung wird nur noch die Differenz genommen, so dass man einen sauberen Änderungsverlauf erhält.
Das Script wird als Textdatei FullBackup.bat gespeichert und mit dem zu sichernden Ordner als Kommandozeilenvariable gestartet.
[BatchPfad]\FullBackup.bat [Ordner der Orifginal-Dateien]
@echo off
REM === HIER ANPASSEN : ============================================================
REM Pfad zu 7zip
set Z=C:\Program Files\7-Zip\7z.exe
REM Standard Backup Ordner
set BF=D:\\backup03\MISC-Backup\7z
REM ============ VERARBEITUNG ======================================================
set SF=%1%
REM Hochkomma weg
set SF=%SF:"=%
REM Filename
for /f "tokens=* delims= " %%f in ("%SF%") do set SN=%%~NXf
REM Alternativ Pfad bauen
set SP=%SF:\\=NET\%
set SP=%SP::=%
set SP=%SP:"=%
REM EXCLUDE LIST
rem -xr!*.o
set xcl=
:loop
shift
if "%1"=="" goto :endloop
set xcl=%xcl% -xr!%1%
goto :loop
:endloop
cls
echo EXCLUDES: %xcl%
Echo BACKUP : %d%%t% von %SF%
echo PFAD : %BF%\%SP%\%d%%t%.7z
echo EXCLUDES: %xcl%
echo.
echo.
REM 7Z
if exist "%BF%\%SP%\basis.7z" goto :increment
Rem Backup
"%Z%" a "%BF%\%SP%\basis.7z" "%SF%" %xcl%
goto :end
:increment
REM DATETIME
for /f "tokens=1,2,3,4 delims=. " %%i in ('date /t') do set d=%%k-%%j-%%i
for /f "tokens=1,2 delims=: " %%i in ('time /t') do set t=%%i%%j
set inc=%BF%\%SP%\%d%%t%.7z
REM Backup Incrementell
"%Z%" u "%BF%\%SP%\basis.7z" "%SF%" -ms=off -mx=9 -t7z -u- -up0q3r2x2y2z0w2!"%inc%" %xcl%
:end
explorer.exe "%BF%\%SP%"