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