sk4r
Goto Top

Automatischer FTP Up und Download mit Prüfung

Hallo liebes Community,

ich bin ein wenig am Verzweifeln, da ich nun am Ende meines Lateins angekommen bin.

Mein Vorhaben (wobei alles automatisch ablaufen muss):

- Es gibt ein lokales Verzeichnis, in dem in unregelmäßigen Abständen Dateien abgelegt werden.
- Zudem gibt es einen FTP Server, der einen Ordner enthält und dieser auch unregelmäßig mit Dateien befüllt wird.

Das lokale Verzeichnis muss also ständig überprüft werden, ob neue Dateien vorhanden sind. Wenn ja, sollen diese, falls sie noch nicht auf dem FTP Server abgelegt worden sind, hochgeladen werden (quasi Watchdog).
Nach dem Verschieben, sollen die lokalen Dateien in ein anderes Verzeichnis geschoben werden.

Wenn auf dem FTP Server eine neue Datei existiert, soll dieser heruntergeladen werden.

Wichtig bei all diesen Aktionen ist die Protokollierung, was wann und von wo nach wo transferiert wurde.

Ich habe es nun schon mit Powershell, Shell und ScriptFTP probiert. Leider immer wieder ohne Erfolg.

PS: Evtl. relevant: Der FTP Server ist ein Windows Server 2003 mit IIS und FTP.

Nun hoffe ich auf Eure Unterstützung.

Späte Grüße
sk4r

Content-ID: 195000

Url: https://administrator.de/forum/automatischer-ftp-up-und-download-mit-pruefung-195000.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

Chris85
Chris85 28.11.2012 aktualisiert um 09:04:21 Uhr
Goto Top
Hi,

das was du suchst ist ja die klassische Cloud-Lösung. Ich würde das mitteln OwnCloud lösen (http://owncloud.org/support/install/). Wie es mit der Protokollierung aussieht kann ich Dir nicht sagen. Müsste Aber auch einzustellen sein.

Gruß

Chris
sk4r
sk4r 28.11.2012 um 10:00:49 Uhr
Goto Top
Hi Chris,

die OwnCloud Lösung sieht sehr gut aus und ich werde es sicherlich für andere Sachen gut einsetzen können.
Hierfür kommt es leider nicht in Frage.

Der FTP Server, auf den ich zugreifen möchte, wird nicht von mir administriert/verwaltet. D.h. ich habe dort lediglich Lese-/Schreibrechte auf 2 Ordner.

VG
Chris85
Chris85 28.11.2012 um 10:22:42 Uhr
Goto Top
Hi,

ok, schade. Dann wirst du es wohl per Batch machen müssen. Da kannst du dir mal Robocopy anschauen, bzw. falls du nicht der cli-Typ bist Robocopy GUI.

Damit würde ich es als nächstes versuchen. Kann aber leider keine Gewährleistung geben, dass das damit zu 100% funktioniert.

Gruß

Chris
Chris85
Chris85 28.11.2012 aktualisiert um 10:32:32 Uhr
Goto Top
Hi,

hab noch ein kleines HowTo gefunden. Vielleicht klappts:

http://www.niljuha.de/ftp-server-automatisch-mit-lokalem-verzeichniss-s ...

Und noch eines:
http://www.webdomination.de/2010/05/ftp-synchronize-ftp-server-mit-loka ...

Eines wird schon funktionieren.

Gruß

Chris
sk4r
sk4r 28.11.2012 um 16:16:33 Uhr
Goto Top
Hi,

das ist weniger ein Sync, mehr ein hoch und runterladen.

Beide HowTos sind nicht das, was ich suche.

VG
Friemler
Friemler 28.11.2012 aktualisiert um 23:14:06 Uhr
Goto Top
Hallo sk4r,

mein Vorschlag:
@echo off & setlocal


set "LogFile=E:\LogFile.log"  

set "LocalSrcDir=E:\Test"  
set "LocalDestDir=E:\Test2"  
set "LocalFileList=.\LocalListing.txt"  

set "FTPServer=Server"  
set "FTPUser=User"  
set "FTPPassword=Passwort"  
set "FTPDir=Verzeichnis"  
set "FTPFileList=.\FTPListing.txt"  

set "FTPDirScript=%TEMP%\GetDir.txt"  
set "FTPDownloadScript=%TEMP%\GetFile.txt"  
set "FTPUploadScript=%TEMP%\PutFile.txt"  


> "%FTPDirScript%" echo open %FTPServer%  
>>"%FTPDirScript%" echo user %FTPUser% %FTPPassword%  
>>"%FTPDirScript%" echo ascii  
>>"%FTPDirScript%" echo cd "%FTPDir%"  
>>"%FTPDirScript%" echo ls -l "%FTPFileList%"  
>>"%FTPDirScript%" echo bye  

ftp -s:"%FTPDirScript%" -vin > NUL  


> "%LocalFileList%" dir /b /a:-d "%LocalDestDir%"  

for /f "tokens=8*" %%a in ('findstr /v /b "d" "%FTPFileList%"') do (  
  findstr /b /c:"%%b" "%LocalFileList%" 1>NUL 2>NUL || (  
    > "%FTPDownloadScript%" echo open %FTPServer%  
    >>"%FTPDownloadScript%" echo user %FTPUser% %FTPPassword%  
    >>"%FTPDownloadScript%" echo binary  
    >>"%FTPDownloadScript%" echo cd "%FTPDir%"  
    >>"%FTPDownloadScript%" echo lcd "%LocalDestDir%"  
    >>"%FTPDownloadScript%" echo get "%%b"  
    >>"%FTPDownloadScript%" echo bye  

    >>"%LogFile%" echo %DATE% %TIME%: Download Datei "ftp://%FTPDir%/%%b" nach "%LocalDestDir%"  
    ftp -s:"%FTPDownloadScript%" -vin > NUL  
  )
)


> "%LocalFileList%" dir /b /a:-d "%LocalSrcDir%"  

for /f "usebackq tokens=* delims=" %%a in ("%LocalFileList%") do (  
  findstr /e /c:"%%a" "%FTPFileList%" 1>NUL 2>NUL || (  
    > "%FTPUploadScript%" echo open %FTPServer%  
    >>"%FTPUploadScript%" echo user %FTPUser% %FTPPassword%  
    >>"%FTPUploadScript%" echo binary  
    >>"%FTPUploadScript%" echo cd "%FTPDir%"  
    >>"%FTPUploadScript%" echo lcd "%LocalSrcDir%"  
    >>"%FTPUploadScript%" echo put "%%a"  
    >>"%FTPUploadScript%" echo bye  

    >>"%LogFile%" echo %DATE% %TIME%: Upload Datei "%LocalSrcDir%\%%a" nach "ftp://%FTPDir%"  
    ftp -s:"%FTPUploadScript%" -vin > NUL  

    >>"%LogFile%" echo %DATE% %TIME%: Verschiebe Datei "%LocalSrcDir%\%%a" nach "%LocalDestDir%"  
    move "%LocalSrcDir%\%%a" "%LocalDestDir%"  
  )
)


del "%LocalFileList%" 2>NUL  
del "%FTPFileList%" 2>NUL  
del "%FTPDirScript%" 2>NUL  
del "%FTPDownloadScript%" 2>NUL  
del "%FTPUploadScript%" 2>NUL  

Die Variablen in den Zeilen 4 bis 14 müssen angepasst werden. Das Script muss über den Taskplaner in regelmäßigen Abständen gestartet werden.

UNGETESTET!!!


Gruß
Friemler
sk4r
sk4r 19.03.2013 um 11:46:21 Uhr
Goto Top
Vielen Dank Friemler,

ich habe das Script nun angepasst angewendet und es funktioniert tadellos.

PS: Sorry für die verspätete Antwort, war leider verhindert.

VG