reisszahn2009
Goto Top

Batch automatisch per FTP abgleichen oder austauschen, wenn neuere auf dem FTP liegen.

Hi zusammen,
lasst uns ein kleines Script erarbeiten.

Ich möchte ein Script schreiben, was sich als "Geplanter Task" mit einem FTP verbindet und von dort Dateien mit einem lokalen Verzeichnis abgleicht. Wenn die Dateien auf dem FTP neuer sind, sollen die lokalen ersetzt werden.

Vielleicht habt ihr schon Ansätze wie man so etwas realisieren kann?

Ich werde mich auch mal ans Werk machen und meine ersten Schritte präsentieren.

Content-ID: 127761

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

Ausgedruckt am: 08.11.2024 um 05:11 Uhr

aqui
aqui 23.10.2009 um 12:19:54 Uhr
Goto Top
Capivara

http://capivara.sourceforge.net/

kann auch automatisch FTP Server syncen.
Reisszahn2009
Reisszahn2009 23.10.2009 um 13:39:37 Uhr
Goto Top
@echo off

rem Parameter einlesen
set ftpuser=%1
set ftppass=%2
set ftpip=%3
set ftplog=%4
set ftpfile=%5

rem Uebertragungsdatei bauen
echo user %ftpuser%> ftpcmd.dat
echo %ftppass%>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo prompt>> ftpcmd.dat
echo mget *.bat>> ftpcmd.dat
echo prompt>> ftpcmd.dat
echo quit>> ftpcmd.dat

echo ftpcmd.dat >> %ftplog%
echo ---------- >> %ftplog%
type ftpcmd.dat >> %ftplog%
echo. >> %ftplog%

ftp -n -s:ftpcmd.dat %ftpip% >> %ftplog%

del ftpcmd.dat

:end

Mein erster Entwurf. Wenn man es mit Windows-Bordmitteln macht, kann es sich ein weiteres Tool auf dem Server sparen.
Reisszahn2009
Reisszahn2009 19.03.2010 um 08:50:23 Uhr
Goto Top
Hier meine letztendliche Lösung mit wget:
echo Synchronisierung ...
set log-wget=C:\wget-%date%.log
set syncftpmode=ftp
set syncftpip=127.0.0.1
set syncuser=admin
set syncpass=pw
"C:\wget\wget.exe" --recursive --mirror %syncftpmode%://%syncftpip% --ftp-user=%syncuser% --ftp-password=%syncpass% --no-host-directories --directory-prefix="C:/SYNC/" --output-file=%log-wget% --tries=1  
if ""%errorlevel%""==""0"" (echo ... erfolgreich) else (  
	echo ... fehlerhaft! Exitcode: %errorlevel%
	set /a errorcounter+=1
)
findstr "RETR" "%log-wget%" > NUL  
if ""%errorlevel%""==""0"" (  
	echo.
	echo Synchronisierte Dateien ...
	findstr "RETR" "%log-wget%"  
)
eccos01
eccos01 10.05.2010 um 16:08:10 Uhr
Goto Top
Hallo,

ich habe zu der Lösung zwei Fragen...

1. Wo bekommt man eine funktionsfähige und virenfrei Version von wget für Windows her?
2. Nach welchen Kriterien macht wget den Abgleich? Kann man die Kriterien selber beeinflussen (mittels Parameter?
eccos01
eccos01 10.05.2010 um 16:09:48 Uhr
Goto Top
Zitat von @aqui:
Capivara

http://capivara.sourceforge.net/

kann auch automatisch FTP Server syncen.


Kann den capivara ohne GUI gestartet werden... als auf der Kommandooberfläche... soll ja als geplante Task laufen.
Reisszahn2009
Reisszahn2009 14.05.2010 um 10:57:42 Uhr
Goto Top
1. Ich habe meine Version von dieser Seite:
http://users.ugent.be/~bpuype/wget/

2. Zuständig ist der Zusatz "--mirror" er "spiegelt" nur in eine richtig -> Vom FTP zum Dateisystem. Er geht nach Zeitstempel / Größe.