Mittwoch, 16. Oktober 2013

Privat Cloud: Lokalen Ordner und FTP Server mit WinSCP automatisch synchronisieren.




Eine kurze Anleitung wie man einen lokalen Ordner unter Windows automatisch mit einem FTP Server synchronisieren kann. Eine Art einfache Version von Dropbox oder Google Drive aber Privat und mit einer sicheren Verbindung wenn es der Server zulässt. Dafür wird das FTP Tool WinSCP verwendet.

Was braucht man dazu?

- Einen FTP-Server
- Einen WinSCP FTP-Client
- Eine sichere Verbindung mit explicit tls
- 3 Minuten Zeit

Schritt 1

Notiert euch eure Verbindungsdaten für euren FTP Server. Serveradresse, Benutzername und Passwort.
Ladet dann den WinSCP FTP-Client herunter und installiert ihn, merkt euch den Installationspfad. Dann verbindet euch zu eurem FTP Server mit WinSCP und speichert dabei den Fingerprint eurer Verbindung.

Diesen findet ihr hier:



Schritt 2

Einen Ordner erstellen den ihr mit dem FTP Server synchronisieren wollt.
Zum Beispiel:
C:\Users\techii\Documents\share
Einen Ordner erstellen oder auswählen den ihr als Speicher verwenden wollt.
Zum Beispiel:
IP-ZU-EUREM-FTP-SERVER\share

Schritt 3


Eine Batch Datei erstellen.
Zum Beispiel:
C:\Users\techii\Documents\synch.bat
Eine synch.bat Datei macht man, in dem man Notepad öffnet und bei Speichern unter die Option Alle Dateien bei Dateityp auswählt.

In dieser Datei speichert ihr alle Infos die es braucht die beiden Ordner synchron zu halten und bei der Ausführung werden die Ordner synchronisiert.
ACHTUNG: Wenn ihr das Passwort in der Datei speichert kann jemand der Zugriff auf diese Datei hat den Zugang zum FTP Server haben.

Die folgende Beispiel Batch Datei schreibt eine share.txt Datei die von WinSCP gelesen wird.
Ersetzt folgende Informationen:
FTP-SERVER-IP-ADDRESS (Zum Beispiel: 127.0.0.1)
FTP-SERVER-USERNAME (Zum Beispiel: USER)
FTP-SERVER-PASSWORT (Zum Beispiel: Passwort)
FTP-SERVER-FINGERPRINT (Zum Beispiel: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX)
FTP-SERVER-PFAD (Zum Beispiel: /share)
PFAD-WINSCP (Zum Beispiel: "C:\Program Files (x86)\WindSCP\")
PFAD-ZUM-LOKALEN-SHARE-ORDNER (Zum Beispiel: C:\Users\techii\Documents\share)
PFAD-ZU-DIESEM-SKRIPT (Zum Beispiel: C:\Users\techii\Documents\)


 @ECHO Off  
 TITLE Synchronisation mit FTP-SERVER-IP-ADDRESS
 mode con:cols=120 lines=25  
 COLOR 8F  
 echo Synchronisation gestartet
 echo # Automatisch abbrechen bei einem Fehler>share.txt
 echo option batch abort>>share.txt
 echo # Überschreiben ohne Bestätigung>>share.txt
 echo option confirm off>>share.txt
 echo # Verbindungsteil>>share.txt
 echo open ftp://FTP-SERVER-USERNAME:FTP-SERVER-PASSWORT@FTP-SERVER-IP-ADDRESS -explicittls -certificate="FTP-SERVER-FINGERPRINT" >>share.txt
 echo # Binary Modus forcieren>>share.txt
 echo option transfer binary>>share.txt
 echo # Pfad beim FTP Server ändern>>share.txt
 echo cd /FTP-SERVER-PFAD>>share.txt
 echo # Pfad zum lokalen Ordner ändern>>share.txt
 echo lcd PFAD-ZUM-LOKALEN-SHARE-ORDNER>>share.txt
 echo # Beide Ordner synchronisieren>>share.txt
 echo synchronize both PFAD-ZUM-LOKALEN-SHARE-ORDNER FTP-SERVER-PFAD -delete>>share.txt
 echo # Verbindung beenden>>share.txt
 echo close>>share.txt
 echo # WinSCP schliessen>>share.txt
 echo exit>>share.txt

 REM Ins WinSCP Verzeichnis wechseln und Skript ausfuehren und eine Log-Datei erstellen
 cd "PFAD-WINSCP"
 WinSCP.com /script=PFAD-ZU-DIESEM-SKRIPT\share.txt /log=PFAD-ZU-DIESEM-SKRIPT\sftplog.txt
 echo Synchronisation fertig
 ping localhost -n 2 >NUL
 exit

Schritt 4

Einen Task erstellen im Windows Task  Planer. Einfach auf Start dann taskschd.msc eingeben. Dort erstellt ihr einen Task nach belieben und tragt dann bei Neue Aktion die Batch Datei und den Pfad zur Batchdatei ein. Wie man einen Task erstellt könnt ihr hier nachlesen:
http://www.winfaq.de/faq_html/Content/tip2500/onlinefaq.php?h=tip2548.htm


So das wärs, nun habt ihr ein automatisches Synchronisationsskript in eure Private Cloud.
Es gibt auch APPs für eure Mobilen Geräte die das selbe machen. So habt ihr auch auf euren Handys oder Tablets immer alle Daten synchron.

Erweitertes Beispiel

Hier noch ein Beispiel mit einer Abfrage wo ihr auswählen könnt ob ihr nur Downloaden, Uploaden oder Synchronisieren wollt. Auch hier müsst ihr die Einstellungen zuerst anpassen.

 @ECHO Off  
 TITLE Network  
 mode con:cols=120 lines=25  
 COLOR 8F  
 echo Start synchronisation  
 :start  
 cls  
 REM CHOOSE 1,2,3 for different options  
 echo.  
 echo.  
 echo.   
 Echo  (1) upload  
 echo  (2) download  
 echo  (3) sync both  
 echo.  
 CHOICE /C 123 /M "=>"  
   
 if errorlevel 3 goto both  
 if errorlevel 2 goto download  
 if errorlevel 1 goto upload  
 REM only Download  
 :download  
 cd "C:\Users\techii\Documents\bat\"  
 del share.txt  
 echo # Automatically abort script on errors>>share.txt  
 echo option batch abort>>share.txt  
 echo # Disable overwrite confirmations that conflict with the previous>>share.txt  
 echo option confirm off>>share.txt  
 echo # Connect using a password>>share.txt  
 echo open ftp://username:password@127.0.0.1 -explicittls -certificate="XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX">>share.txt  
 echo # Force binary mode transfer>>share.txt  
 echo option transfer binary>>share.txt  
 echo # Change remote directory>>share.txt  
 echo cd /share>>share.txt  
 echo lcd C:\Users\techii\Documents\share>>share.txt  
 echo synchronize local C:\Users\techii\Documents\share /share -delete>>share.txt  
 echo # Disconnect>>share.txt  
 echo close>>share.txt  
 echo # Exit WinSCP>>share.txt  
 echo exit>>share.txt  
   
 rem Execute script  
 cd "C:\Program Files (x86)\WinSCP\"  
 WinSCP.com /script=C:\Users\techii\Documents\bat\share.txt /log=C:\Users\techii\Documents\bat\sftplog.txt  
   
 goto end  
   
 REM Only Upload  
 :upload  
 cd "C:\Users\techii\Documents\bat\"  
 del share.txt  
 echo # Automatically abort script on errors>>share.txt  
 echo option batch abort>>share.txt  
 echo # Disable overwrite confirmations that conflict with the previous>>share.txt  
 echo option confirm off>>share.txt  
 echo # Connect using a password>>share.txt  
 echo open ftp://username:password@127.0.0.1 -explicittls -certificate="XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX">>share.txt  
 echo # Force binary mode transfer>>share.txt  
 echo option transfer binary>>share.txt  
 echo # Change remote directory>>share.txt  
 echo cd /share>>share.txt  
 echo lcd C:\Users\techii\Documents\share>>share.txt  
 echo synchronize remote C:\Users\techii\Documents\share /share -delete>>share.txt  
 echo # Disconnect>>share.txt  
 echo close>>share.txt  
 echo # Exit WinSCP>>share.txt  
 echo exit>>share.txt  
   
 rem Execute script  
 cd "C:\Program Files (x86)\WinSCP\"  
 WinSCP.com /script=C:\Users\techii\Documents\bat\share.txt /log=C:\Users\techii\Documents\bat\sftplog.txt  
   
 goto end  
   
 REM Synchronisation  
 :both  
 cd "C:\Users\techii\Documents\bat\"  
 del share.txt  
 echo # Automatically abort script on errors>>share.txt  
 echo option batch abort>>share.txt  
 echo # Disable overwrite confirmations that conflict with the previous>>share.txt  
 echo option confirm off>>share.txt  
 echo # Connect using a password>>share.txt  
 echo open ftp://username:password@127.0.0.1 -explicittls -certificate="XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX" >>share.txt  
 echo # Force binary mode transfer>>share.txt  
 echo option transfer binary>>share.txt  
 echo # Change remote directory>>share.txt  
 echo cd /share>>share.txt  
 echo lcd C:\Users\techii\Documents\share>>share.txt  
 echo synchronize both C:\Users\techii\Documents\share /share -delete>>share.txt  
 echo # Disconnect>>share.txt  
 echo close>>share.txt  
 echo # Exit WinSCP>>share.txt  
 echo exit>>share.txt  
   
 rem Execute script  
 cd "C:\Program Files (x86)\WinSCP\"  
 WinSCP.com /script=C:\Users\techii\Documents\bat\share.txt /log=C:\Users\techii\Documents\bat\sftplog.txt  
   
 goto end  
   
 :end  
 echo Synchronisation finished  
 ping localhost -n 5 >NUL  
 REM Remove pause to exit automaticly  
 pause  
 exit  



Viel spass mit eurer eigenen Cloud!

Keine Kommentare:

Kommentar veröffentlichen