lospollos
Goto Top

Timeout bei FTP-Synchronisation (WinSCP, PowerShell)

Moin!

Ich habe einen Ordner auf meinem Rechner, der hin und wieder mal mit meinem FTP-Server synchronisiert werden soll. Grundsätzlich funktioniert es mit diesem Skript ganz gut:
$Source = "c:\upload"  
$Destination = "/upload/"  

Add-Type -Path "WinSCPnet.dll"  

$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Ftp
    HostName = "<HOST>"  
    PortNumber = <PORT>
    UserName = "<USER>"  
    Password = "<PASSWORD>"  
    <SECURITY OPTIONS>
    }

#$sessionOptions.AddRawSettings("PingType", "2") 
#$sessionOptions.AddRawSettings("PingIntervalSecs", "30") 

$session = New-Object WinSCP.Session

#$session.ReconnectTimeInMilliseconds = 10000

try {
    $session.Open($sessionOptions)
    $Session.SynchronizeDirectories([WinSCP.SynchronizationMode]::Remote, $Source, $Destination, $true, $true, [WinSCP.SynchronizationCriteria]::Either)
    } finally {
    $session.Dispose()
    }
Das Problem ist nun, dass rund 2500 Dateien (~19GB) geprüft werden sollen. Das dauert natürlich eine ganze Weile. Leider verliert das Skript nach einiger Zeit immer die Verbindung zum FTP-Server. Vermutlich, da der FTP-Server die Verbindung kappt, weil serverseitig keine Veränderung stattfand. Im Netz habe ich bereits die oben eingetragenen Ansätze mit $sessionOptions.AddRawSettings() und $session.ReconnectTimeInMilliseconds gefunden. Leider hilft das alles nicht.

Die folgende Fehlermeldung erhalte ich immer:
"WinSCP.SessionRemoteException: Verbindung verloren.  
<SECURITY DETAILS>

Zeit abgelaufen (Kontrollverbindung)
Kopieren von Dateien auf den entfernten Rechner schlug fehl."  

Habt ihr noch weitere Ansätze? Danke!

Content-Key: 340533

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

Ausgedruckt am: 19.03.2024 um 10:03 Uhr

Mitglied: H41mSh1C0R
H41mSh1C0R 14.06.2017 um 07:38:16 Uhr
Goto Top
Das erste was die WinSCP Jungs schreiben: --> Timeout hochsetzen

https://winscp.net/eng/docs/ui_login_connection


Das 2te wenn FTP benutzt wird:

A reason is typically a broken firewall/proxy/NAT that aborts the FTP control connection as it sees no traffic during the file transfer. Note that there’s no way for WinSCP to keep the control connection alive during the transfer. It would violate the FTP protocol specification.

Wenns Timeout nicht greift schauts wohl schlecht aus.

VG
Mitglied: aqui
aqui 14.06.2017 aktualisiert um 08:39:58 Uhr
Goto Top
WinSCP ist KEIN FTP und hat damit nicht das Geringste zu tun !
https://de.wikipedia.org/wiki/Secure_Copy
SCP kann also per se niemals mit einem FTP Server sprechen. Das ist so wie Fisch und Fahrrad.... Solche grundlegenden Basics sollte man aber schon wissen.
Mitglied: 133417
133417 14.06.2017 aktualisiert um 08:44:00 Uhr
Goto Top
Zitat von @aqui:

WinSCP ist KEIN FTP und hat damit nicht das Geringste zu tun !
https://de.wikipedia.org/wiki/Secure_Copy
SCP kann also per se niemals mit einem FTP Server sprechen. Das ist so wie Fisch und Fahrrad.... Solche grundlegenden Basics sollte man aber schon wissen.
Das ist leider falsch, WinSCP kann sehr wohl mit FTP-Servern reden face-smile, schau mal in die Doku.

p.s. Fisch gibts erst Freitag face-wink
Mitglied: LosPollos
LosPollos 14.06.2017 aktualisiert um 18:12:45 Uhr
Goto Top
@H41mSh1C0R:
Schade, mit einem erhöhten Timeout klappt es leider auch nicht. Danke trotzdem! face-smile

@aqui:
Danke für die Anregung. Dafür, dass WinSCP kein FTP ist, funktionieren meine anderen FTP-Synchronisationen mit WinSCP bislang ziemlich gut. Dies ist das erste mal, dass ich auf ein Problem stoße. Aber sonst habe ich auch nur Synchronisationen mit kleineren Datenmengen bzw. häufigen Dateiänderungen. Aber, ich bin immer offen für Alternativen. Was schlägst du denn als Alternative vor? Hier nochmal meine Rahmenbedingungen:
  • lokaler Ordner soll 1:1 auf FTP-Server gespiegelt werden; gelöschte, lokale Daten sollen auch auf dem FTP-Server gelöscht werden
  • Ordnergröße: Derzeit ~19GB
  • Nur selten Dateiveränderungen bzw. neue Dateien
  • Aufruf muss per PowerShell möglich sein
  • Unterstützung von Authentifizierung per explizitem TLS wird benötigt
Mitglied: 133417
133417 14.06.2017 aktualisiert um 20:16:11 Uhr
Goto Top
Statt auf FTPs zu setzen würde ich an deiner stelle auf SFTP (scp) umsatteln, das ist einerseits wesentlich kompakter handelbar (kein getrennter Control und Dataport) und zweitens ist es bei Übertragungen zuverlässiger, Verschlüsselung ist natürlich Standard.
Rsync nutzt z.B. von Haus aus SCP als Übertragungsmedium, und kann bei Gigabyte großen Files nur die Teile übertragen die sich tatsächlich geändert haben.

Gruß
Mitglied: LosPollos
LosPollos 16.06.2017 um 08:37:28 Uhr
Goto Top
Danke. Leider bin ich in diesem Falle auf FTP angewiesen, da der Server nicht mir gehört. Aber grundsätzlich bin ich natürlich bei dir, SFTP wäre grundsätzlich cooler.

Rsync sieht ziemlich cool aus. Aber leider scheint das ja eher für Unix-Systeme gedacht zu sein. Hilft mir in meinem Fall also leider auch nicht wirklich weiter.. face-sad
Mitglied: 133417
133417 16.06.2017 um 09:08:52 Uhr
Goto Top
Zitat von @LosPollos:

Rsync sieht ziemlich cool aus. Aber leider scheint das ja eher für Unix-Systeme gedacht zu sein. Hilft mir in meinem Fall also leider auch nicht wirklich weiter.. face-sad
Lässt sich selbstverständlich auch nativ unter Windows nutzen!

Hast du einen Mikrotik-Router könntest du die Timeouts damit höher setzen bzw. die Session-States länger offen halten.