Newsletter 365tipů můžete číst zdarma. Placené předplatné je dobrovolná podpora, která pomáhá webu pokračovat.
Podpořit 365tipů

TIP#2548: Jak synchronizovat (zálohovat) web přístupný přes FTP na disk ve Windows?

Taková ta úplně klasická věc. Máte někde webový server (třeba právě jako 365tipu.cz) a je dostupný jen přes FTP (SFTP). Chcete si ho zálohovat na disk ve Windows (ať už lokální nebo místní síťový). Ideálně tak, aby se synchronizovalo, tedy aby na lokále po spuštění zálohy vznikla přesná kopie toho co je na serveru a nestahovalo se vše znovu, co už tam je.

Nejsnadnější řešení je použít WinSCP. Můžete ho totiž pouštět z příkazové řádky (a také z Planovače) a pomoci skriptu mu říct co má vlastně udělat.

Skript určí, co a odkud synchronizovat

Skript si přitom snadno vytvořite (pojmenujte si ho jak chcete), základ je tento:

  1. option batch on
  2. option confirm off
  3. open ftp://login@[email protected]
  4. cd /folder
  5. option transfer binary
  6. synchronize local .\local_folder\ -delete
  7. close
  8. exit
  1. se postará aby skript na všechno odpověděl automaticky a tím pádem se nezasekl
  2. nastaví přepsání souboru 
  3. otevře FTP připojení, musíte určit přihlašovací údaje a kam se připojit
  4. můžete (ale nemusíte) vstoupit do složky ze které bude stahovat 
  5. binární přenos, samozřejmě
  6. spustit synchronizaci z remote na local, na místo které uvedete, pokud uvedete -delete tak se na cíli smaže to co už není na vzdáleném, pokud ne, bude tam zůstávat i vše staré (což není moc praktické) 
  7. uzavřete ftp spojení
  8. a ukončete WinSCP

TIP: Co že to znamená FTP a jaké FTP klienty používat

WinSCP zajistí synchronizaci

Spouštět budete jako

WinSCP.exe /script=jménoskriptu  

nebo

WinSCP.com /script=jménoskriptu  

Jediný nedostatek prvního bude, že nebudete vidět co se děje, to WinSCP.exe neumí. Při použití WInSCP.com ale uvidíte co aktuálně dělá, takže je to poněkud praktičtější. Je na vás, co se vám bude víc hodit. 

Výstup z WinSCP.com můžete klasicky přes >soubor.log přesměrovat do souboru, pokud byste si chtěli provést po synchronizaci kontrolu. Ale pozor, neobjeví se tam všechno co vidíte na obrazovce a moc použitelné to není. 

Můžete ale navíc vytvářet detailní log soubor pro případnou kontrolu, postačí přidat další parametr

WinSCP /script=jménoskriptu /log=jménologsouboru /loglevel=0 

/loglevel určuje množství logovaných informací, 0 je “normální” úroveň a i tak toho bude hodně, jednička a dvojka zajistí ještě víc. Pozor na to, že FTP log může být obrovský – klidně i několik desítek MB. 

Ověřit jak to dopadlo je asi nejsnazší pohledem na konec kde bude uvedeno něco jako 

Copying finished: Transferred: 726 663 896, Elapsed: 0:11:36, CPS: 1 042 919/s

Nové spuštění WinSCP nepřepíše obsah log souboru. Takže si ho případně mazejte sami před spuštěním. 

Vyjmout ze synchronizace

synchronize má ještě parametr umožńující určité co se má a také nemá synchronizovat. Protože nejspíš budete chtít nesychronizovat cache, tak 

-filemas=”|cache/”

Je důležité, že vyjmutí složek musí být s pomoci / na konci jejich názvu.