Backup via Internet auf 1TB TrueCrypt-Ordner schlägt fehl
Liebe Admins,
nach langer Zeit habe ich mal wieder ein kleines Projekt realisiert.
=> Backup via VPN-Kopplung auf eine TrueCrypt-Verschlüsselte USB-Festplatte an einer Fritzbox <=
Vorab: Der hier unten gepostete PS-Code läuft im Testszenarion problemlos. Doch sobald es an das Zielszenario geht bekomme ich Probleme.
Szenario 1 (Test) - funktioniert:
Das Script läuft auf einem lokalen PC.
Das Backups soll in den TrueCrypt-Container auf einem USB-Stick an der im selben Netzwerk laufenden Fritz-Box.
1. Freigabe der Fritzbox wird als Netzlaufwerk eingebunden
2. TrueCrypt-Container auf dem Netzlaufwerk wird gemountet (Dateigröße 500MB)
3. CopyJob
4. TrueCrypt-Container wird dismountet
5. Netzlaufwerk wird getrennt
Szenario 2 (Ziel) - Problem:
Das Script läuft auf einem lokalen PC.
Das Backups soll in den TrueCrypt-Container auf einem USB-Stick an einer per VPN gekoppelten Fritz-Box.>
1. Freigabe der Fritzbox wird als Netzlaufwerk eingebunden
2. TrueCrypt-Container auf dem Netzlaufwerk wird gemountet (Dateigröße 1TB) <=== DAUERT LANGE, KLAPPT ABER
3. CopyJob <=== SCHLÄGT FEHL, in einem manuellen Test ist das gemountete Laufwerk zwar da, aber über den Explorer nicht ansprechbar.
4. TrueCrypt-Container wird dismountet
5. Netzlaufwerk wird getrennt
Verbindungsdaten:
Quelle: Download: 5,0Mbit/s Upload:900kbit/s
Ziel: Download: 800kbit/s Upload:352 kbit/s
Die Anbindung des Ziels ändert sich in Kürze. Dann sähe es so aus:
Quelle: Download: 5,0Mbit/s Upload:900kbit/s
Ziel: Download: 25Mkbit/s Upload:2,5Mbit/s
Nun meine Frage:
Warum das Problem in Szenario 2?
Liegt es an der Größe der TrueCrypt-Datei?
Liegt es an der lamen Verbindung?
Hat jemand Erfahrung mit so großen TrueCryp-Containern?
Vielen Dank,
Gruß Sam
nach langer Zeit habe ich mal wieder ein kleines Projekt realisiert.
=> Backup via VPN-Kopplung auf eine TrueCrypt-Verschlüsselte USB-Festplatte an einer Fritzbox <=
Vorab: Der hier unten gepostete PS-Code läuft im Testszenarion problemlos. Doch sobald es an das Zielszenario geht bekomme ich Probleme.
Szenario 1 (Test) - funktioniert:
Das Script läuft auf einem lokalen PC.
Das Backups soll in den TrueCrypt-Container auf einem USB-Stick an der im selben Netzwerk laufenden Fritz-Box.
1. Freigabe der Fritzbox wird als Netzlaufwerk eingebunden
2. TrueCrypt-Container auf dem Netzlaufwerk wird gemountet (Dateigröße 500MB)
3. CopyJob
4. TrueCrypt-Container wird dismountet
5. Netzlaufwerk wird getrennt
Szenario 2 (Ziel) - Problem:
Das Script läuft auf einem lokalen PC.
Das Backups soll in den TrueCrypt-Container auf einem USB-Stick an einer per VPN gekoppelten Fritz-Box.>
1. Freigabe der Fritzbox wird als Netzlaufwerk eingebunden
2. TrueCrypt-Container auf dem Netzlaufwerk wird gemountet (Dateigröße 1TB) <=== DAUERT LANGE, KLAPPT ABER
3. CopyJob <=== SCHLÄGT FEHL, in einem manuellen Test ist das gemountete Laufwerk zwar da, aber über den Explorer nicht ansprechbar.
4. TrueCrypt-Container wird dismountet
5. Netzlaufwerk wird getrennt
Verbindungsdaten:
Quelle: Download: 5,0Mbit/s Upload:900kbit/s
Ziel: Download: 800kbit/s Upload:352 kbit/s
Die Anbindung des Ziels ändert sich in Kürze. Dann sähe es so aus:
Quelle: Download: 5,0Mbit/s Upload:900kbit/s
Ziel: Download: 25Mkbit/s Upload:2,5Mbit/s
Nun meine Frage:
Warum das Problem in Szenario 2?
Liegt es an der Größe der TrueCrypt-Datei?
Liegt es an der lamen Verbindung?
Hat jemand Erfahrung mit so großen TrueCryp-Containern?
Vielen Dank,
Gruß Sam
# Config
$global:config = @{}
$config.networkpath = "\\192.168.0.1\Freigabe"
$config.networkuser = "NAS-USER"
$Config.networkpassword = Get-Content ("C:\Passwort_Netzlaufwerk.txt") | ConvertTo-SecureString
$config.truecryptfile = "TRUECRYPTFILE.tc"
$config.truecryptpassword = Get-Content ("C:\Passwort_TrueCrypt.txt") | ConvertTo-SecureString
$global:job = @{}
$job.quelle = @("C:\Test","C:\Test2")
$job.parameter = "/mir /w:0 /r:0 /np /tee"
clear-host
# ==============================================================================================================================================================
# Deklarationen
$config.network_cred = New-Object System.Management.Automation.PSCredential($config.networkuser, $Config.networkpassword)
$config.truecrypt_cred = New-Object System.Management.Automation.PSCredential("Dummy", $Config.truecryptpassword)
# Funktionen
Function Get-NextFreeDriveletter {
$AtoZ = "HIJKLMNOPQRSTUVWXYZ"
$DriveLetters = Get-PSDrive -PSProvider 'FileSystem' | ForEach-Object {
$_.Name
}
for($i=0; $i -le $AtoZ.length -1; $i++) {
If ($DriveLetters -notcontains $AtoZ[$i]) {
Return $AtoZ[$i]+":"
}
}
}
function Connect-Share {
param(
[String]$DriveName,
[String]$ShareName,
[Object]$Credential,
[String]$DisplayName
)
$RegEntry = $ShareName.replace("\","#")
$RegPath = $("Registry::HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\MOUNTPOINTS2\$RegEntry")
$MyDrive = $DriveName + "\"
# Netzlaufwerk frei machen
if((test-path $DriveName) -eq $true) {
Start-Process -FilePath cmd -ArgumentList "/c net use /d $DriveName /yes >nul" -wait -NoNewWindow | Out-Null
sleep -m 500
$tmp = test-path $DriveName
if($tmp -ne $true) {
write-host -ForegroundColor green "... Laufwerk erfolgreich frei gemacht: $DriveName"
} else {
write-host -ForegroundColor red "... Laufwerk konnte nicht frei gemacht werden: $DriveName"
return
}
}
# Registry Displayname löschen
if((test-path $RegPath) -eq $true) {
remove-item -Path $RegPath -Recurse
}
# Credentials zerlegen
$Cred = [System.Management.Automation.PSCredential]$Credential
$Password = $Cred.GetNetworkCredential().Password
$UserName = $Cred.UserName
# Share Verbinden
$P = Start-Process -Filepath cmd -ArgumentList "/c net use $DriveName $ShareName $Password /user:$UserName /p:no >nul" -Wait -PassThru -NoNewWindow
sleep -m 500
if ($P.ExitCode -eq 0) {
write-host -ForegroundColor green "... Laufwerk erfolgreich angebunden: $Displayname ($DriveName)"
# Registry Displyname schreiben
New-Item -Path $RegPath -Force | Out-Null
New-ItemProperty -Path $RegPath -Name "_LabelFromReg" -PropertyType String -Value $Displayname -Force | Out-Null
} else {
write-host -ForegroundColor red "... Laufwerk konnte nicht angebunden werden: $Displayname ($DriveName)"
}
}
function Disconnect-Share {
param(
[String]$DriveName,
[String]$ShareName
)
$RegEntry = $ShareName.replace("\","#")
$RegPath = $("Registry::HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\MOUNTPOINTS2\$RegEntry")
$MyDrive = $DriveName + "\"
# Netzlaufwerk frei machen
if(test-path $MyDrive) {
Start-Process -FilePath cmd -ArgumentList "/c net use /d $DriveName /yes >nul" -wait -NoNewWindow
sleep -m 500
$tmp = test-path $DriveName
if($tmp -ne $true) {
write-host -ForegroundColor green "... Laufwerk erfolgreich getrennt. ($DriveName)"
} else {
write-host -ForegroundColor red "... Laufwerk konnte nicht getrennt werden. ($DriveName)"
}
}
# Registry Displayname löschen
if((test-path $RegPath) -eq $true) {
remove-item -Path $RegPath -Recurse
}
}
# ==============================================================================================================================================================
# Programmablauf
$starttime = date
# Netzlaufwerk verbinden
$MyNetworkDrive = Get-NextFreeDriveletter
write-host "Netzlaufwerk:"
Connect-Share -DriveName $MyNetworkDrive -ShareName $config.networkpath -DisplayName "EXT_BACKUP" -Credential $config.network_cred
# TrueCrypt ankoppeln
$MyTrueCryptDrive = Get-NextFreeDriveletter
write-host "TrueCrypt:"
$TrueCryptFile = $MyNetworkDrive + "\" + $config.truecryptfile
Start-Process -FilePath cmd -ArgumentList "/c ""C:\Program Files\TrueCrypt\TrueCrypt.exe"" $TrueCryptFile /l $MyTrueCryptDrive /p $($config.truecrypt_cred.GetNetworkCredential().password) /a /q" -wait -NoNewWindow
$tmp = Test-Path $MyTrueCryptDrive
if($tmp -eq $true) {
write-host -ForegroundColor green "... Container erfolgreich gemountet. ($MyTrueCryptDrive)"
# Backup
write-host -ForegroundColor yellow "Do Backup-Job ..."
$job.quelle | foreach {
$quelle = $_
$ziel = "$MyTrueCryptDrive$($_.remove(0,2).trim())"
write-host -ForegroundColor yellow "Quelle: $quelle"
write-host -ForegroundColor yellow "Ziel: $ziel"
Start-Process -FilePath cmd -ArgumentList "/c robocopy.exe ""$quelle"" ""$ziel"" $($job.parameter)" -wait -NoNewWindow
write-host ""
write-host ""
}
# TrueCrypt abkoppeln
write-host "TrueCrypt:"
Start-Process -FilePath cmd -ArgumentList "/c ""C:\Program Files\TrueCrypt\TrueCrypt.exe"" /d $MyTrueCryptDrive /f /q" -wait -NoNewWindow
$tmp = Test-Path $MyTrueCryptDrive
if($tmp -eq $false) {
write-host -ForegroundColor green "... Container erfolgreich dismountet. ($MyTrueCryptDrive)"
} else {
write-host -ForegroundColor red "... Container konnte nicht dismountet werden. ($TrueCryptFile)"
}
} else {
write-host -ForegroundColor red "... Container konnte nicht gemountet werden. ($TrueCryptFile)"
}
# Netzlaufwerk trennen
write-host "Netzlaufwerk:"
Disconnect-Share -DriveName $MyNetworkDrive -ShareName $config.networkpath
# Ausgabe
$endtime = date
$time = $endtime - $starttime
write-host ""
write-host ""
write-host -ForegroundColor Cyan "Laufzeit ($endtime): $($time.Hours)h:$($time.Minutes)m:$($time.Seconds)s:$($time.Milliseconds)ms"
Start-Sleep -s 30
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 272773
Url: https://administrator.de/contentid/272773
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
8 Kommentare
Neuester Kommentar
Moin
Nun das Hauptptoblem ist erstmal dein Uploadspeed auf jeder Seite.
Da werden beim Mounten sowie danach etliche Daten gesendet was einiges an Zeit kostet.
Dazu wenn der Container eingebunden ist checkt Windows ja auch nochmal kurz ob da ein Datenträger Fehler vorhanden ist sowie beim Öffnen der Virenscanner die ganzen Daten sowie Vorschaufunktion für Bilder ect.
Da kommen ne Menge Daten zustande was bei einem kleinen Uploadspeed einiges Dauert. Dazu kann immer dein Container Beschädigt werden da Schreibprozesse bei Unterbrochende Verbindung Schädlich ist und dadurch ggfs den ganzen Container verlierst.
Und Passwort in ner Datei zu haben ist auch nicht Sinnvoll
Da währe es schon was besser zb ein Raspberry zu nehmen und darüber den Container zu Mounten und per VPN oder SSH Verbinden und die Daten schicken.
Damit würde der Transfer der Daten auch einiges Schneller gehen.
Die Fritte mag zwar einiges Anbieten aber manche Sachen sind nicht wirklich sinvoll damit zu machen...
Nun das Hauptptoblem ist erstmal dein Uploadspeed auf jeder Seite.
Da werden beim Mounten sowie danach etliche Daten gesendet was einiges an Zeit kostet.
Dazu wenn der Container eingebunden ist checkt Windows ja auch nochmal kurz ob da ein Datenträger Fehler vorhanden ist sowie beim Öffnen der Virenscanner die ganzen Daten sowie Vorschaufunktion für Bilder ect.
Da kommen ne Menge Daten zustande was bei einem kleinen Uploadspeed einiges Dauert. Dazu kann immer dein Container Beschädigt werden da Schreibprozesse bei Unterbrochende Verbindung Schädlich ist und dadurch ggfs den ganzen Container verlierst.
Und Passwort in ner Datei zu haben ist auch nicht Sinnvoll
Da währe es schon was besser zb ein Raspberry zu nehmen und darüber den Container zu Mounten und per VPN oder SSH Verbinden und die Daten schicken.
Damit würde der Transfer der Daten auch einiges Schneller gehen.
Die Fritte mag zwar einiges Anbieten aber manche Sachen sind nicht wirklich sinvoll damit zu machen...
Das mit dem Passwort bzw dein Code hab ich nur überflogen und mir die Zeile mit der Passwortdatei war halt am "Blinken" *g*
Der Raspberry ist ja ein PC wenn auch ein kleiner und nicht unbedingt so Leistungsstark aber da währe es besser die Platte zu Mounten.
Aber je nach Verschlüsselung kann es schon den Prozessor Überlasten aber die neuen Versionen Raspberry 2 oder BananaPI, CubbieBoard und was es da noch so gibt reichen zumindes für die normale AES aus.
Aber Speed solltes du nicht unbedingt erwarten damit aber dies dürfte bei dem kleinen Upload eh nicht so groß ins gewicht fallen.
Alternativ währe ja auch ein kleines sparsames NAS System wodu eine stärkere Verschlüsselung machen kannst sowie auch gleich ein RAID sowie Backups machen kannst.
Wenn aber viele Daten gesichert werden bzw Übertragen währe Lokal ein System vorteilhafter.
ggfs mal im Umfeld nachfragen ob einer nen Raspberry zum Testen hat.
Der Raspberry ist ja ein PC wenn auch ein kleiner und nicht unbedingt so Leistungsstark aber da währe es besser die Platte zu Mounten.
Aber je nach Verschlüsselung kann es schon den Prozessor Überlasten aber die neuen Versionen Raspberry 2 oder BananaPI, CubbieBoard und was es da noch so gibt reichen zumindes für die normale AES aus.
Aber Speed solltes du nicht unbedingt erwarten damit aber dies dürfte bei dem kleinen Upload eh nicht so groß ins gewicht fallen.
Alternativ währe ja auch ein kleines sparsames NAS System wodu eine stärkere Verschlüsselung machen kannst sowie auch gleich ein RAID sowie Backups machen kannst.
Wenn aber viele Daten gesichert werden bzw Übertragen währe Lokal ein System vorteilhafter.
ggfs mal im Umfeld nachfragen ob einer nen Raspberry zum Testen hat.
Moin,
Wie der Kollege schon sagte. Truecrypt über dünne Leitungen hindurch auf einem windows-rchner zu mounten, dürfte eine sehr wacklige Angelegenheit sein.
Meine Empfehlung:
Stell auf der "Serrverseite" einen Mini-Serer hin, der die ganze chose mit truecrypt und mounten abwickelt. Das kann ein RasPi sein, oer auch ein kleiner x86-Server.
Du machst dann einfach eine VPn-verbindung zu diesem Server udn schaufelst dann die daten durch dieses VPN durch auf den Server. Je nachdem wie kritisch Du es siehst, kannst Du das VPN entweder auf der fritzbox oder auf Deinem Server terminieren.
das dürfte deutlich performanter udn stabiler sein, als ein Blockdevice über eine dünne Internet-leitung zu mounten.
lks
Wie der Kollege schon sagte. Truecrypt über dünne Leitungen hindurch auf einem windows-rchner zu mounten, dürfte eine sehr wacklige Angelegenheit sein.
Meine Empfehlung:
Stell auf der "Serrverseite" einen Mini-Serer hin, der die ganze chose mit truecrypt und mounten abwickelt. Das kann ein RasPi sein, oer auch ein kleiner x86-Server.
Du machst dann einfach eine VPn-verbindung zu diesem Server udn schaufelst dann die daten durch dieses VPN durch auf den Server. Je nachdem wie kritisch Du es siehst, kannst Du das VPN entweder auf der fritzbox oder auf Deinem Server terminieren.
das dürfte deutlich performanter udn stabiler sein, als ein Blockdevice über eine dünne Internet-leitung zu mounten.
lks
Die meisten Protokolle für's mounten übers Netzwerk sind für das LAN ausgelegt, wo man deutlich stabilere Verbindungen und höhere Datendurchsätze hat als über Weitverkehrsverbindungen.
daher funktionieren diese auch nciht imemr stabil, wenn man WAN statt LAN einsetzt.
lks
PS: Die schwachbrüstige Fritzbox wird auch noch Ihren Beitrag dazu leisten.
Nun das mounten an sich is ja nix schweres.
Jedoch die Art des Devices spielt ne Rolle sowie die Bandbreite die vorhanden ist (Senden/Empfangen).
Und es muss immer mal mit dem Unterbrechen der Internetleitung gerechnet werden aus welchen Gründen auch immer.
Nur son Blockdevice ist da halt Empfindlicher was die Unterbrechung angeht..
Da ist halt eine Verschlüsselte Verbindung zum Datenabgleich doch besser und kann bei Probleme neu gestartet werden...
Jedoch die Art des Devices spielt ne Rolle sowie die Bandbreite die vorhanden ist (Senden/Empfangen).
Und es muss immer mal mit dem Unterbrechen der Internetleitung gerechnet werden aus welchen Gründen auch immer.
Nur son Blockdevice ist da halt Empfindlicher was die Unterbrechung angeht..
Da ist halt eine Verschlüsselte Verbindung zum Datenabgleich doch besser und kann bei Probleme neu gestartet werden...