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

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

Printed on: April 19, 2024 at 21:04 o'clock

Member: aqui
aqui Oct 23, 2009 at 10:19:54 (UTC)
Goto Top
Capivara

http://capivara.sourceforge.net/

kann auch automatisch FTP Server syncen.
Member: Reisszahn2009
Reisszahn2009 Oct 23, 2009 at 11:39:37 (UTC)
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.
Member: Reisszahn2009
Reisszahn2009 Mar 19, 2010 at 07:50:23 (UTC)
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%"  
)
Member: eccos01
eccos01 May 10, 2010 at 14:08:10 (UTC)
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?
Member: eccos01
eccos01 May 10, 2010 at 14:09:48 (UTC)
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.
Member: Reisszahn2009
Reisszahn2009 May 14, 2010 at 08:57:42 (UTC)
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.