Willkommen Gast 

Infos ein-/ausblenden

Willkommen Gast! Um Beiträge zu verfassen musst Du registriert sein.





Seiten: [1]
Autor Thema:DIY Cloud Backup mit HardlinkBackup
fpdragon
Neuling
Beiträge: 1
Permalink
avatar
Beitrag DIY Cloud Backup mit HardlinkBackup
am January 13, 2020, 15:55
Zitat

Hallo,

Ich bin noch relativ neu mit HardlinkBackup aber ich konnte schon einige tolle Ergebnisse erzielen die vl in diesem Forum noch nicht so direkt beschrieben worden sind.

Ziel ist es eine Art privates Cloud Backup einzurichten. Es gibt zwei Standorte jeweils mit Strom und Internetzugang und an einem wird gearbeitet und gelebt und am anderen soll das Backup liegen. Wirklich physisch wo anders falls es brennt oder eine Bombe einschlägt xD. Der Backupserver soll ein alter Laptop sein mit USB3 und ein paar USB Festplatten mit Win10 Storagespaces Simple oder Parity formatiert. Optional kann man die Platten noch mit BitLocker verschlüsseln, falls fremde darauf zugriff haben könnten.

Über einen VPN Tunnel lassen sich meine Produktiv PCs und der Backupserver verbinden so dass sie sich Netzwerktechnisch so sehen als wären sie im selben LAN. Das ist für später wichtig.

Prinzipiell soll die Datenkommunikation per SMB(CIFS) also "Windows Freigabe" geschehen. Die nächste Frage die sich stellt ist, wo soll HardlinkBackup laufen? Wer gibt eine Platte frei und wer schreibt/liest darauf?
Läuft HardlinkBackup am eigentlichen PC so würde das Scannen der zu sichernden Dateien flott gehen. Dafür dauert das Scannen der vorhandenen Backups länger und auch das Verlinken durch Hardlinks bzw das Löschen alter Backups dauert viel länger. Das "Link Skript" Feature ist mir da auch ein wenig zu spookie.
Daher habe ich mich für eine Ausführlung am Backupserver selbst entschieden. So kann HardlinkBackup im Prinzip so funktionieren wie es ungefähr gedacht ist und direkt auf der Backup NTFS Partition der USB Platten herumfuhrwerken.

Wie aber die Daten vom eigentlichen PC bereitstellen?
Man könnte jetzt einfach Windows Freigaben konfigurieren aber dadurch verliert man die Möglichkeit vorher Snapshots mit ShadowCopies zu erstellen um auch gelockte/genutzte Files sichern zu können bzw einen eindeutigen Zeitpunkt absamplet. Für mich keine Lösung weil ich zahlreiche Applikationen Webserver usw habe, die ich nicht jedes mal stoppen will wenn ein Backup gezogen wird.

Daher habe ich mir folgendes PowerShell Script "DiskBackupSnapshot.ps1" gebastelt:

$Drive = $args[0]
$Drive_Name = $args[1]


echo "Drive Letter:  $Drive"
echo "Drive Name:    $Drive_Name"


# Remove Share 
Remove-SmbShare -Name ("xxx_Shadow_" + $Drive_Name) -Force

# remove Backup Mount
#Remove-PSDrive -Name Z

# Remove Link
Start-Process -Wait -FilePath cmd -ArgumentList '/c', 'rmdir', ($Drive + '\xxx_Shadow')

# list snapshots
vssadmin list shadows /for=$Drive

# remove shadows
vssadmin delete shadows /for=$Drive /all /Quiet

# create snapshot
(Get-WmiObject -list win32_shadowcopy).create($Drive + "\","ClientAccessible")

#Find the latest Shadow copy
$HDDriveID = (Get-WmiObject win32_volume -filter ("DriveLetter='" + $Drive + "'")).DeviceID
$LastShadowCopy = Get-WmiObject win32_shadowcopy | Where-Object {$_.VolumeName -eq $HDDriveID} | Sort-Object InstallDate | Select-Object -Last 1

# Then mount it:
#New-PSDrive -Name Z -PSProvider FileSystem -Root ($LastShadowCopy.DeviceObject + "\")

$d  = $LastShadowCopy.DeviceObject + "\"
echo "Shadowcopy Path:  $d"

# Link 
#cmd /c mklink /d W:\Shadowcopy "$d"
Start-Process -Wait -FilePath cmd -ArgumentList '/c', 'mklink', '/d', ($Drive + '\xxx_Shadow'), "`"$d`""

# hide Link
(Get-Item ($Drive + '\xxx_Shadow') -Force).attributes="Hidden"

# Create Share
New-SmbShare -Name ("xxx_Shadow_" + $Drive_Name) -Path ($Drive + '\xxx_Shadow') -ReadAccess ($env:UserDomain + "\" + $env:UserName)

Dieses Script kann am PC ausgeführt werden und man übergiebt ihm das Laufwerk ("D:") und einen Laufwerks Namen ("Daten"). Bei Ausführung löscht es automatisch alle ShadowCopies für das Laufwerk und erstellt einen frischen Snapschot. Dieser Snapshot wird dann unter D:\xxx_Shadow\ versteckt verlinkt. Anschließend wir eine neue Windows Freigabe erstellt, die den versteckten Snapshot Ordner shared als "xxx_Shadow_Data". Der lokale Windows User erhält automatisch Leserechte um auf diesen Share zuzugreifen.
Hier sei erwähnt, das Script ist nicht das schönste und man kann sicher noch einiges ausbessern bzw eleganter lösen. Egal, bei mir funktionierts so und es soll als Vorlage für euch dienen.

Gut. Das heißt wir müssten jetzt zuerst am PC das Script ausführen und anschließend entsprechend am Backupserver das HardlinkBackup Profil. Wäre cool wenn man die Ausführung des Scripts vom Backupserver aus triggern könnte. Dann könnte man auch den netten Scheduler von HardlinkBackup verwenden und alles funktioniert vollautomatisch.
Das geht auch und zwar mit PsExec (Sysinternals Tool)
Dazu am PC in der Registry

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
"LocalAccountTokenFilterPolicy"=dword:00000001

Und Google is your Friend um herauszufinden welche Ports man noch in der Firewall freigeben muss am PC. Achtung ich würde diese Ports aber nur für die VPN IP des Backupservers freigeben. Alle anderen Geräte haben dort nichts verloren.

Dann sollte der Befehl

C:\PfadZuPsExec\PSExec64.exe \\MeinPC -u User -p Passwort -h powershell.exe -File C:\LokalerPfadZumScript\DiskBackupSnapshot.ps1 D: Data

vom Backupserver aus ausführbar sein. Es wird aber remote am zu sichernden PC ausgeführt. Cool.

Tja und jetzt ist es nur noch eine Kleinigkeit:
Am Backupserver im Hardlinkbackup Profil
Quellverzeichnis:

\\MeinPC\xxx_Shadow_Data

Pre-Backup Befehl:

C:\PfadZuPsExec\PSExec64.exe \\MeinPC -u User -p Passwort -h powershell.exe -File C:\LokalerPfadZumScript\DiskBackupSnapshot.ps1 D: Data

Und das sollte es gewesen sein.

Ach ja eines noch: Natürlich muss man einmalig vom Backupserver auf die Windows Freigabe des PCs manuell zugreifen. Dabei muss man User und Passwort vom PC eingeben und SPEICHERN. Sonst kann der Backupserver natürlich nicht als dieser User auf den Share vom PC zugreifen.

Natürlich kann man das selbe script auch ganz leicht für andere Laufwerke wiederverwenden. Man muss nur den Pre-Backup Befehl entsprechend anpassen. Man sollte aber darauf achten, dass nicht zwei Jobs gleichzeitig starten weil sonst das Windows Shadow Copies Service Probleme bekommt. Also ca.5min Zeitunterschied und alles sollte stabil laufen.
Außerdem sollte der Shadow Copy Service natürlich auch genügend Speicherplatz erhalten damit, für die Zeitdauer des Backups, auch das Delta der Laufwerksänderungen gespeichert werden können.
Ich empfehle Folgendes einmalig am PC auszuführen:

vssadmin resize shadowstorage /for=D: /on=D: /maxsize=UNBOUNDED

Für die Zukunft:
Beim Backupziehen ist der einzige zeitaufwendige Schritt nun nur noch der "Einlesen" Vorgang bei dem der BackupServer über VPN/Windows Freigabe alle Ordner und Files scannt. Das dauert definitv am längest abgesehen vom Dateitransfer selbst, der nicht vermeidbar ist.
Es wäre denkbar, dass man auch das noch deutlich beschleunigt, in dem man auf dem PC diesen Scan lokal durchführt und das Ergebnis direkt an die BackupServer HardlinkBackup Instanz übergibt. HardlinkBackup bräuchte dann nur noch die fehlenden neuen Dateien laden und den Rest wieder mit Hardlinks verlinken. Usw.
Leider ist das derzeit nicht machbar weil HardlinkBackup keine entsprechende SW-Schnittstelle bietet.
Aber ist vl eine gute Idee für die Zukunft @Lupinhos 😉 Eine Softwareschnittstelle mit der man HardlinkBackup eine File/Folder Liste übergeben kann mit den benötigten Attributen (Filesize, Name, Path, Last Change Timestamp, Checksum?, ...).

Ich hoffe jemand kann was damit anfangen! lG

lupinho
Administrator
Beiträge: 670
Permalink
avatar
Beitrag Re: DIY Cloud Backup mit HardlinkBackup
am January 16, 2020, 23:11
Zitat

Cool! Danke für die tolle Anleitung!
Ein Hinweis noch: Es ist von Vorteil, wenn HardlinkBackup auf dem Quell-PC ausgeführt wird. Das Einlesen der Backupsätze geht schnell, denn dafür muss nur die index.hbi über‘s Netzwerk gezogen werden. Bei den Quelldaten geht das nicht. Insofern ist ein schneller Zugriff auf die Quelldateien besser für HardlinkBackup.
Gruß,
Lupinho

delta_back-
up
Neuling
Beiträge: 7
Permalink
avatar
Beitrag Re: DIY Cloud Backup mit HardlinkBackup
am January 17, 2020, 10:02
Zitat

Unter dem Aspekt der Sicherheit wäre HLB auf dem Zielrechner besser. 😀 Ich denke dabei an Cryptotrojaner die alles verschlüsseln was sie erreichen können. Damit wäre auch das Backup gefährdet.
Sicherer wäre: HLB auf dem Zielrechner. Zugriff vom Zielrechner auf den Hauptrechner nur mit Leserechten, vom Hauptrechner auf den Zielrechner keinerlei Zugriffsrechte. Damit wird die Ausbreitung nahezu verhindert - egal auf welcher Seite eine Infektion erfolgt.

Seiten: [1]
Mingle Forum by cartpauj
Version: 1.0.34 ; Die Seite wurde geladen in: 0.042 Sekunden.