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-Key: 195000

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

Printed on: April 23, 2024 at 13:04 o'clock

Member: Chris85
Chris85 Nov 28, 2012 updated at 08:04:21 (UTC)
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
Member: sk4r
sk4r Nov 28, 2012 at 09:00:49 (UTC)
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
Member: Chris85
Chris85 Nov 28, 2012 at 09:22:42 (UTC)
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
Member: Chris85
Chris85 Nov 28, 2012 updated at 09:32:32 (UTC)
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
Member: sk4r
sk4r Nov 28, 2012 at 15:16:33 (UTC)
Goto Top
Hi,

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

Beide HowTos sind nicht das, was ich suche.

VG
Member: Friemler
Friemler Nov 28, 2012 updated at 22:14:06 (UTC)
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
Member: sk4r
sk4r Mar 19, 2013 at 10:46:21 (UTC)
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