Periodické nahrávání souborů na FTP pomocí WinSCP

Čvn 29, 2019 | Návody

Ř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í.

Udržovat vzdálený adresář aktuální

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.

Plánovač úloh

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.

Plánovač úloh

Jako poslední vyplníme záložku Akce. Zde vlastně napíšeme jaký soubor se má spustit.

Plánovač akce

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.