Upload souborů na server přes FTP je fakt opruz! Každou chvilku něco zapomenete nahrát. Často zbytečně nahráváte soubory, které se vůbec nezměnili. Něco zapomenete smazat, přejmenovat, přesunout atd. Jednoduše děláte chyby, jste jen člověk!
Proto jsem napsal synchronizační skript v PHP, který vše vyřeší automaticky. Skript udržuje seznam všech lokálních souborů (díky za inspiraci) a pokud se některý soubor změní, tak jej nahraje na server. Pokud naopak soubor smažete, pokusí se jej smazat také na serveru. Použití je vcelku triviální:
require_once 'FtpSync.php';
$ftpSync = new FtpSync('ftp://uzivatel:heslo@nabito.net:21/mojecesta/');
$ftpSync->skip(array ('build.xml', 'skipThisDir', 'sitemap.xml'))
->fullSync(realpath('./'));
Skript ignoruje soubory a adresáře začínající tečkou (např. .git .svn .htaccess). Seznam přeskakovaných souborů a adresářů je možné nastavit pomocí metody skip() - víc jsem zatím nepotřeboval. Synchronizační proces je jednostranný – soubory se tedy přenáší pouze od vás na server.
Skript umí rozpoznat nejen změnu, ale také smazání souboru – pamatuje si totiž poslední stav. Smazané soubory pak automaticky smaže i na serveru.
Pomocí příznaku repeatOnError() je možné donutit synchronizaci nepodařené akce opakovat, takhle funkce je však spíš experimentální = má několik neduhů.