![]() L’utilizzo d’Internet è ormai parte della vita quotidiana. Molti provider forniscono da tempo spazio web gratuito dove chiunque può costruire la propria pagina o un intero sito web. Sia si tratti di un web master professionista, sia di un programmatore o, di un semplice studente, sorge il problema di mantenere aggiornata l’immagine del proprio sito web con il web server. In questo caso, gestire manualmente l’aggiornamento di tutti i file modificati non è un’ipotesi praticabile, soprattutto quando i siti da aggiornare sono molti ed hanno anche diversi mirror. In questo articolo parleremo di un semplice e potente strumento che rende agevole l’operazione di aggiornamento di più siti web.
Cos’è sitecopy ed a cosa serve Sitecopy è uno strumento indispensabile per l’aggiornamento di pagine web, sviluppate su una macchina locale, sui diversi web server remoti che le ospitano. Ogni sito web è memorizzato in una determinata directory all’interno del filesystem locale, sitecopy si occupa di mantenere sincronizzato il contenuto di questa con quello di uno o più server remoti.
In cosa è diverso sitecopy da mirror, rdist ed altre utility Sitecopy è funziona in modo molto differente rispetto ad altre utility simili quali mirror, rdist, rsync ed altre ancora. Innanzitutto la prima differenza è il protocollo di trasmissione utilizzato. L’utilizzo di “mirror” ed altre utility richiede d’avere a disposizione un account di shell sul server. Quest’ultima, non rappresenta una soluzione ottimale quando il server è collegato direttamente ad Internet, come nel caso di un web server, per diversi motivi (security, ecc.). Sitecopy invece utilizza sia il protocollo FTP, sia il nuovissimo WebDAV [DAV]. Questo è un vantaggio notevole in quanto, quasi tutti i maggiori ISP provider italiani permettono l’uploading delle pagine web via FTP (Tiscalinet, Geocities, etc.) mentre sono molto restii a permettere l’accesso attraverso altri tipi di servizi di rete. Il secondo punto, ma non meno importante è la velocità. Sitecopy mantiene internamente un database di tutti i file trasferiti sul web server remoto. In questo modo è in grado di riconoscere i file modificati, o cancellati, verificando i file presenti in locale contro il proprio database senza interrogare il server. In questo modo sitecopy, diversamente da altre utility che confrontano singolarmente i file locali con i file presenti sul server con notevole spreco di banda, invia, attraverso la rete, solo i file effettivamente modificati dal web master rispetto alla data del precedente aggiornamento. Questa macroscopica differenza nel funzionamento esiste perché programmi come mirror ed rsync sono stati studiati per mantenere copie di grandi siti FTP mentre sitecopy è uno strumento ideato appositamente per soddisfare le esigenze dei web master.
Come si compila e/o installa I sorgenti di sitecopy possono essere reperiti su Internet [LYRA]. Oltre al pacchetto con il codice sorgente sono già presenti alcuni pacchetti contenenti il programma già compilato per alcuni sistemi operativi (Aix, OS/2, Windows ), nonché per le varie distribuzioni Linux ( Debian, Suse ). Tuttavia, in questo articolo, gli esempi sono riferiti all’utilizzo del programma tramite Linux. La compilazione di sitecopy non presenta particolari difficoltà. Essendo un pacchetto sviluppato con i tool della GNU noteremo al suo interno la presenza dello script di nome configure. Per compilare ed installare il programma bisogna digitare i seguenti comandi :
./configure make make install
Lo script configure ha il compito di genare i file necessari alla compilazione del programma adattandoli al sistema operativo utilizzato. Il comando “make”, invece, compila e genera l’eseguibile del programma. Infine "make install" installa l’eseguibile nel filesystem. L’ultimo passo prima di passare alla configurazione ed al reale utilizzo del programma è quello di creare alcune directory ed i file necessari a sitecopy. Questo va fatto nella vostra home directory tramite i seguenti comandi :
cd $HOME makedir .sitecopy chmod 700 .sitecopy touch .sitecopyrc chmod 600 .sitecopyrc
Come si configura Dopo aver creato la directory .sitecopy ed il file di configurazione .sitecopyrc, possiamo passare alla preparazione di quest’ultimo inserendo le opzioni per istruire sitecopy sui compiti da svolgere. Potete quindi inserire le informazioni relative ai vostri siti web seguendo il file .sitecopyrc come nell’esempio (Listato 1). Come notate, per ogni web server da aggiornare è utilizzata la direttiva site seguita da un nome univoco con cui notifichiamo a sitecopy il nome che vogliamo attribuire al sito. Subito dopo prendono posto le diverse opzioni, l’ordine in cui appaiono non è rilevante. Il primo esempio Nel primo esempio gestiamo l’aggiornamento del sito Infomedia. Questo è un esempio minimo, infatti le opzioni server, username, password, remote e local sono opzioni obbligatorie. Con “server” specifichiamo il nome, o l’IP address, del server cui sitecopy deve connettersi . “local” indica da quale directory, del filesystem locale, sitecopy deve prendere i file mentre “remote” specifica in quale directory vanno memorizzati i file dopo aver effettuato la connessione; infine “username” e “password” sono ovviamente i dati dell’account FTP o WebDAV utilizzato. In esempio trasferiamo le pagine memorizzate dalla home directory dell’utente nella home directory dell’account utilizzato sul server. Sarà quindi cura del web master del web server remoto far puntare il sito web desiderato alla directory utilizzata per il trasferimento dei dati. Il secondo esempio Nel secondo esempio è evidenziato l’uso di nuove opzioni. L’opzione “protocol” specifica a sitecopy il protocollo da utilizzare, il default è FTP e quindi non occorre cambiarlo tranne nel caso in cui si utilizzi WebDAV (in tal caso il valore da impostare sarebbe http). “port” permette di specificare un numero di porta diverso quando ci si connette al server nel caso in cui il server remoto utilizzi degli indirizzi di porta diversi dallo standard. “ftp nopasv” è invece necessario su molti server FTP (quello di Tiscalinet per l’appunto) in quanto specifica a sitecopy di non usare l’estensione del PASV (Passive Mode) in quanto non supportata dal server, pena il fallimento dell’operazione. Il terzo esempio Anche nel terzo esempio sono presenti nuove opzioni. L’opzione “permissions”, valida solo per i trasferimenti via FTP, può essere impostata su ignore, exec o all. Il valore di default è “ignore”, in questo caso, quando i file vengono creati sul server, viene attribuito loro il valore di default stabilito dall’amministratore di sistema. “exec” fa in modo che tutti i file eseguibili conservino gli stessi permessi anche sul server, questo è un utile accorgimento per assicurarsi che gli script CGI funzionino regolarmente. “all” invece fa in modo che i permessi dei file sul server siano gli stessi dei file in locale. L’opzione “symlinks” accetta anch’essa tre possibili valori : ignore, follow e maintain. Con “ignore “vengono ignorati completamente tutti i riferimenti a link simbolici presenti nel filesystem locale. Con “follow” invece, sitecopy segue i link simbolici aggiornando il file a cui il link punta. In “maintain” (solo per WebDAV) i link simbolici vengono ricreati sul server remoto identici a quelli del filesystem locale. Infine l’opzione nooverwrite va utilizzata quando il server non consente la sovrascrittura di un file, in tal caso sitecopy provvederà a rimuovere il file dal server prima di aggiornarlo. Il quarto esempio L’ultimo esempio ci mostra altre opzioni molto utili. “nodelete” istruisce sitecopy a non cancellare nessun file dal server anche se in locale è stato fatto. “checkmoved” istruisce sitecopy a cercare il file che sono stati spostati, in tal modo sitecopy farà spostare il file al server remoto invece di cancellarlo e copiarlo nella nuova posizione. “exclude” definisce quali file o directory sono da escludere dall’aggiornamento, i file temporanei ad esempio. “ascii” definisce quali file devono essere trasferiti in modalità ASCII altrimenti di default è utilizzata la modalità binaria. “rename”, infine, istruisce sitecopy a trasferire i file sul server con un diverso nome (questo è utile quando il server è IIS che usa nome di default per le pagine diverso dagli altri). Nella configurazione di un sito le opzioni exclude, ascii e rename possono essere ripetute più volte.
Come si usa Le opzioni per l’effettivo utilizzo di sitecopy sono molto semplici. Inizialmente dobbiamo però far distinzione tra il caso in cui il sito web sia è già presente sul server remoto ed il caso in cui non lo sia. Se il sito web è già presente dobbiamo utilizzare il comando:
sitecopy –-catchup nome_sito
Questo comando dice a sitecopy di marcare tutti i file nel suo database come “aggiornati”. Nel caso contrario, invece, si utilizza una sintassi diversa:
sitecopy –-init nome_sito
Questo comando marca tutti i file del database di sitecopy come “non aggiornati”. Con nome_sito si intende il nome del sito specificato tramite la direttiva site nel file di configurazione. Sulla riga di comando possono essere specificati più nomi di sito, separati da uno spazio, oppure l’opzione “-a” (all) che effettua l’operazione su tutti i siti presenti nel file di configurazione. Una volta modificate in locale le pagine del sito, si può finalmente effettuare l’aggiornamento utilizzando il comando:
sitecopy –-update -a
Sitecopy supporta anche altre opzioni, la più utile è l’opzione “--fetch”. Utilizzandola, sitecopy si connetterà al server remoto e, se quest’ultimo supporta l’estensione MDTM, aggiornerà il proprio database con le informazioni sui file presenti sul server. Quest’opzione è molto comoda per allineare il database di sitecopy quando viene effettuato l’aggiornamento del sito web con altri strumenti. Le ultime opzioni degne di nota sono : “--list” per vedere i soli file modificati senza aggiornarli e “--synchronize” che sostituisce tutti i file locale con quelli presenti sul server.
Per i più pigri : xsitecopy Se sul vostro sistema avete a disposizione la libreria GTK e l’ambiente GNOME [GWEB] potete utilizzare xsitecopy. Questi è un front-end a sitecopy e permette sia la configurazione sia l’utilizzo di sitecopy tramite un’interfaccia grafica user-friendly. Questo programma può essere reperito in forma binaria, sul sito Internet di sitecopy, oppure, può essere compilato dai sorgenti di sitecopy utilizzando il parametro “--enable-gnomefe” quando si lancia lo script configure.
Conclusioni Sitecopy è uno strumento semplice e versatile, disegnato tenendo in mente uno scopo specifico e determinate esigenze da soddisfare. E’ da tenere presente che lo sviluppo di sitecopy è ancora in corso. Il tool a linea di comando funziona egregiamente mentre per il front-end grafico potrebbe esserci ancora qualche piccolo problema o feature mancante. Tuttavia, fatte salve le dovute avvertenze, sitecopy è uno strumento assolutamente da provare e che ogni web master dovrebbe avere.
Riferimenti [DAV] http://www.webdav.org/other/faq.html [LYRA] http://www.lyra.org/sitecopy/ [GWEB] http ://www.gnome.org/
listato 1 #.sitecopyrc #File di esempio su come configurare sitecopy site infomedia server www.infomedia.it username agx password 3hgg38fj remote ~/agx/ local ~/nuovi_clienti/infomedia/ site tiscali server web.tiscalinet.it port 3576 username fu943 password f3u9y remote / local /DOSH/web-site/www.linux.it protocol ftp ftp nopasv site linux server www.linux.it username fu943 password f3u9y remote ~/public_html/ local /DOSH/web-site/www.linux.it protocol ftp permissions exec symlinks follow nooverwrite site nalug server www.linux.it username f4iuh98 password fi489yu4 remote ~/public_html local /DOSH/web-site/www.linux.it/nalug ftp nopasv exclude *~ exclude *.bak exclude *gz exclude personal exclude software ascii *.pl ascii *.txt ascii *.cgi nodelete checkmoved rename index.html default.htm © GnomixLand http://www.gnomixland.com/ |