Řešil jsem problém jak pravidelně nahrávat data na FTP server. Šlo o to, že náš informační systém pravidelně vytváří nějakou sestavu v excelu. Tuto sestavu potřebuji dostat na ftp server, kde data z těchto souborů dále zpracovávám php skriptem.
Udržovat vzdálený adresář aktuální
První, co jsem zkusil (a občas to i fungovalo) byla funkce v programu WinSCP: Příkazy – Udržovat vzdálený adresář aktuální. Funguje to tak, že se připojíte k požadovanému FTP serveru a nad správným lokálním i vzdáleným adresářem spustíte tuto funkci. Nejprve se provede počáteční synchronizace. Potom program čeká a jakmile je lokální soubor změněn tak ho nakopíruje na server. Háček je v tom, že když lokální soubor někdo otevře, WinSCP se rozzlobí, že soubor někdo používá a synchronizace se zastaví.
Jdeme skriptovat
Hledal jsem dál a narazil jsem na možnost tvorby skriptů. Tedy dané soubory se sestavou se mi vygenerují a až poté se spustí skript, který soubory nahraje na server.
Vytvořím tedy textový soubor myscript.txt a do něj zapíšu:
winscp.com /script="C:\Users\hilgertl\OneDrive\Documents\My Web Sites\hilgert\blog\export.txt" /log="myscript.log"
Koncovku souboru změním z txt na bat a nakopíruji tento soubor do adresáře, kde mám nainstalovaný WinSCP. Tento soubor vlastně spustí skript, který zapíšeme do souboru export.txt a o průběhu akce vytvoří zprávu, kterou zapíše do myscript.log. Soubor myscript.log doporučuji také založit ručně kvůli právům (skript nemusí mít práva vytvářet soubory na daném disku).
Do souboru export.txt pak napíšeme toto:
open ftp://uzivatelske_jmeno:heslo@adresa_ftp_serveru
put "C:\Users\hilgertl\OneDrive\Documents\My Web Sites\hilgert\blog\winscp*" /wp-content/test/
exit
Pokud nyní spustíme myscript.bat nakopírují se všechny soubory ze zdrojového do cílového adresáře.
Nastavení automatického spouštění
K periodickému spouštění jsem využil nástroje, který už ve windows je a to Plánovač úloh (Task Scheduler). V plánovači zvolíme Vytvořit úlohu… a v sekci Obecné zadáme její název.
V záložce Aktivační událost volíme jak budeme skript pouštět. Klikneme na tlačítko Nová a vyplníme dle libosti. Já volím spouštění denně v nějaký stanovený čas.
Jako poslední vyplníme záložku Akce. Zde vlastně napíšeme jaký soubor se má spustit.
Tady jen pozor, že cestu k našemu skriptu zadáváme v uvozovkách tedy např.: "C:\Program Files (x86)\WinSCP\myscript.bat"
V sekci Spustit v (volitelné) zadáme cestu bez uvozovek a pouze do adresáře, kde náš skript je. Tedy např. C:\Program Files (x86)\WinSCP
No a to je vše! Nyní se nám denně v nastavený čas budou přenášet soubory na FTP server.