sitecopy(1) | User Manuals | sitecopy(1) |
sitecopy - Maintient à jour des copies distantes de sites web
sitecopy [options] [mode opératoire] nomdusite ...
sitecopy sert à copier des sites web stockés localement vers des serveurs web distants. Une simple commande va mettre à jour sur le serveur les fichiers modifiés localement, et supprimer du serveur les fichiers supprimés localement, maintenant ainsi le site distant à jour avec le site local. L'objectif est de supprimer l'étape très pénible de mise à jour et de suppression de fichiers individuels avec un client FTP. sitecopy peut également repérer les fichiers que vous avez déplacés localement pour les déplacer sur le site distant.
FTP, WebDAV et autres serveurs de publication basés sur HTTP (comme par exemple AOLserver et Netscape Enterprise) sont également gérés.
Cette section explique comment mettre en place la maintenance d'un site web à l'aide de sitecopy. Après avoir présenté les rudiments, on examinera deux situations : d'abord celle où vous avez déjà placé votre site sur le serveur distant, puis celle où vous ne l'avez pas encore fait.
Si vous ne l'avez pas déjà fait, il vous faut
créer un fichier de configuration qui contiendra les informations
relatives aux sites que vous désirer administrer. Vous devez
également créer un répertoire dans lequel
sitecopy stockera l'état des fichiers de chacun des sites
distants. Le fichier de configuration ainsi que le répertoire de
stockage de l'état des fichiers doivent n'être accessibles que
par vous-même -- sans quoi sitecopy refusera de
démarrer. Pour créer le répertoire de stockage avec les
permissions adéquates, utilisez la commande
mkdir -m 700 .sitecopy
depuis votre répertoire personnel. Pour créer le fichier de
configuration, utilisez les commandes
touch .sitecopyrc
chmod 600 .sitecopyrc
depuis votre répertoire personnel. Ceci fait, éditez le fichier
de configuration pour ajouter les détails relatifs à votre
site comme indiqué à la section CONFIGURATION.
Si vous aviez déjà placé votre site sur le
serveur distant, assurez-vous que vos fichiers locaux soient
synchronisés avec les fichiers distants. Ensuite, lancez
sitecopy --catchup nomdusite
où nomdusite est le nom du site que vous avez indiqué
après le mot-clé site dans le fichier de
configuration.
Si vous n'avez pas de copie locale du site distant, vous pouvez
utiliser le mode récupération pour découvrir le
contenu du site distant, et le mode synchronisation pour le
télécharger. Le mode récupération marche bien
avec les serveurs WebDAV, et peut marcher avec les serveurs FTP. Tapez
sitecopy --fetch nomdusite
pour récupérer les informations sur les fichiers du
site ; en cas de succès, tapez
sitecopy --synch nomdusite
pour télécharger une copie locale. N'effectuez PAS ces
opérations si vous avez déjà une copie locale de votre
site.
Assurez-vous que l'administrateur ait bien créé la
racine du site distant. Tapez
sitecopy --init nomdusite
où nomdusite est le nom du site que vous avez indiqué
après le mot-clé site dans le fichier de
configuration.
Après avoir mis en place le site comme décrit dans
une des deux sections ci-dessus, vous pouvez commencer à
éditer vos fichiers locaux normalement. Lorsque vous en avez fini
avec un ensemble de changements, et que vous voulez mettre à jour la
copie distante de votre site, tapez
sitecopy --update nomdusite
et tous les fichiers modifiés seront remontés sur serveur. Tout
fichier localement supprimé sera également suppprimé
sur le serveur, à moins que l'option nodelete n'ait
été spécifiée dans le fichier de configuration.
Si vous déplacez un ou plusieurs fichiers entre deux
répertoires, leurs copies distantes seront supprimées du
serveur, puis remontées à nouveau, à moins que l'option
checkmoved n'ait été spécifiée dans le
fichier de configuration.
À tout moment, si vous désirez voir la liste des
changements effectués au site local depuis la dernière mise
à jour, pour pouvez lancer
sitecopy nomdusite
qui affichera la liste des différences.
Dans certaines circonstances, les fichiers qui constituent réellement le site distant diffèrent de ce que sitecopy pense qu'il y a sur le site. Cela peut arriver, par exemple, si la connexion au serveur est interrompue durant une mise à jour. Dans cette situation, vous devriez utiliser le mode récupération pour retrouver du serveur distant la liste des fichier qui constitue le site.
Pour une opération normale, spécifiez un
simple mode opératoire, suivi par les options que vous avez
choisies, puis un ou plusieurs nom de sites. Par exemple,
sitecopy --update --quiet siteprincipal autresite
mettra à jour silencieusement les sites appelés
« siteprincipal » et
« autresite ».
Les mots de passe seront masqués dans l'affichage de débogage, à moins que le mot-clé cleartext ne soit utilisé. Un exemple de l'utilisation des informations de débogage est de déboguer le mode récupération FTP :
sitecopy --debug=ftp,socket --fetch nomdusite
L' état stocké d'un site est un instantané de l'état du site, conservé dans le répertoire de stockage (~/.sitecopy/). Le fichier de stockage sert à conserver cet état entre deux invocations du programme. En mode mise à jour, sitecopy construit une liste de fichiers pour chaque site en parcourant le répertoire local, prend connaissance de l'état stocké et, en comparant les deux, détermine quels fichiers ont changé, lesquels ont été déplacés, et ainsi de suite.
La configuration est assurée par le fichier de configuration (fc). Ce fichier contient une ou plusieurs définitions de sites. Un nom unique est attribué à chaque définition de site ; c'est par ce nom qu'on se réfère à un site en ligne de commande.
Chaque définition de site contient les détails du serveur sur lequel est stocké le site, la manière dont on peut accéder à ce serveur, l'emplacement local et distant du site, ainsi que des options pour ce site si nécessaire.
La définition d'un site est constituée d'une série de lignes :
site nom-du-site
server nom-du-serveur
remote répertoire-racine-distant
local répertoire-racine-local
[ port numéro-de-port ]
[ username utilisateur ]
[ password mot-de-passse ]
[ proxy-server nom-du-proxy
proxy-port numero-port-proxy ]
[ url URL-du-site ]
[ protocol { ftp | webdav } ]
[ ftp nopasv ]
[ ftp showquit ]
[ ftp { usecwd | nousecwd } ]
[ http expect ]
[ safe ]
[ state { checksum | timesize } ]
[ permissions { ignore | exec | all } ]
[ symlinks { ignore | follow | maintain } ]
[ nodelete ]
[ nooverwrite ]
[ checkmoved [renames] ]
[ tempupload ]
[ exclude motif ]...
[ ignore motif ]...
[ ascii motif ]...
Tout ce qui suit le caractère # sur une ligne est
considéré comme un commentaire et est ignoré. Les
valeurs peuvent être entourées par des guillemets, et les
caractères peuvent être échappés par une
contre-oblique (\). Par exemple, pour utiliser le motif d' exclusion
*#, utilisez la ligne suivante:
exclude "*#"
La clé server est utilisée pour spécifier le serveur distant sur lequel est stocké le site distant. Cela peut être un nom DNS ou une adresse IP. La connexion au serveur se fera sur le port par défaut pour le protocole utilisé, ou bien par le numéro indiqué par le mot-clé port. sitecopy gère les protocoles WebDAV ou FTP -- le mot-clé protocol spécifie lequel utiliser, en prenant comme valeur webdav ou ftp respectivement. Le protocole par défaut est FTP.
Les mots-clés proxy-server et proxy-port peuvent être utilisés pour spécifier un serveur de proxy. Les serveurs de proxy ne sont gérés qu'avec le protocole webDAV.
Si le serveur FTP ne gère pas le mode passif (PASV), utilisez l'option ftp nopasv. Pour afficher le message retourné par le serveur à la fermeture de la connexion, utilisez l'option ftp showquit. Si le serveur ne permet la remontée des fichiers que dans le répertoire courant, utilisez le mot-clé ftp usecwd (un symptôme possible est le message : "overwrite permission denied"). Notez que le répertoire racine distant (mot-clé remote) doit être un chemin absolu (qui commence par '/'), sans quoi usecwd sera ignoré.
Si le serveur WebDAV utilise correctement le message d'attente 100-continue, comme par exemple Apache version 1.3.9 et supérieure, utilisez le mot-clé http expect. Cela peut économiser de la bande passante ainsi que réduire le temps nécessaire à une mise à jour.
Pour authentifier l'utilisateur sur le serveur, utilisez les mots-clés username et password. Si le mot de passe n'est pas spécifié, il sera recherché dans le fichier ~/.netrc s'il existe. Voyez ftp(1) pour la syntaxe de ce fichier.
Pour le protocole WebDAV, l'authentification basique et par condensé (digest authentication) sont gérées. Notez que vous ne devriez pas utiliser l'authentification basique, à moins que vous ne considériez la connexion au serveur comme digne de confiance.
Vous pouvez spécifier l'URL complète pour
accéder au site avec le mot-clé url. Elle n'est
utilisée qu'en mode liste plate, afin qu'elle puisse figurer dans les
pages« Changements récents ». L'URL ne
doit pas se terminer par une barre oblique (/) ; un exemple
valide est
url http://www.site.com/monsite
Si vous spécifiez l'option tempupload, les fichiers modifiés sont transmis au serveur distant avec un préfixe « .in. », puis renommés (par déplacement) en leur nom d'origine une fois remontés complètement.
L'état d'un fichier est conservé dans le fichier de stockage associé (dans ~/.sitecopy/*), et sert à déterminer quand le fichier a été modifié. Il y a deux méthodes possibles, qui peuvent être choisies via le mot-clé state , avec comme paramètre timesize (par défaut), ou checksum.
timesize utilise la date de dernière modification et la taille du fichier pour détecter s'il a changé. checksum utilise une somme de contrôle MD5 pour détecter toute modification dans le contenu du fichier.
Notez que calculer une somme de contrôle implique de lire le contenu entier du fichier ; et est plus lent que d'utiliser simplement la date de dernière modification et la taille. Cela peut être utile par exemple si vous utilisez un système de gestion de versions qui change la date de dernière modification des fichiers à chaque extraction d'une copie de travail (« checkout »), alors que le contenu des fichiers n'est en réalité pas modifié.
Vous pouvez passer en Mode Sécurisé grâce au mot-clé
safe. Dans ce mode, chaque fois qu'un fichier est remonté sur le serveur, la date de modification du fichier telle qu'elle apparaît sur le serveur est conservée. Par la suite, lorsque le fichier a été changé localement et doit être à nouveau remonté sur le serveur, la date de modification actuellement conservée côté serveur est récupérée puis comparée avec la date locale. En cas de différence, cela signifie que la copie sur le serveur a été changée par une tierce partie ; un message d'avertissement est produit, et votre copie locale n'écrasera pas la copie distante, prévenant ainsi la suppression de toute modification.
Le mode sécurisé peut être utilisé avec des serveurs FTP ou WebDAV, mais si Apache/mod_dav est utilisé, il faut une version de mod_dav au moins égale à 0.9.11.
Note Le mode sécurisé ne peut être utilisé conjointement avec l'option nooverwrite (voir plus bas).
Le mot-clé remote spécifie le
répertoire racine de la copie distante du site. Vous pouvez le donner
sous la forme d'un chemin absolu, comme :
remote /www/monsite/
Si vous utilisez le protocole FTP, vous pouvez également
spécifier le répertoire sous la forme d'un chemin relatif au
répertoire de connexion ; il doit être dans ce cas
préfixé par « ~/ », comme par
exemple :
remote ~/public_html/
Le mot-clé local spécifie le
répertoire qui sert localement de stockage aux fichiers du site. Cela
peut être un chemin absolu ou relatif à votre
répertoire personnel (donné par la variable d'environnement
$HOME), encore une fois en usant du préfixe
« ~/ ».
local ~/html/lesite/
local /home/fred/html/lesite/
sont équivalents, si $HOME est fixé à
« /home/fred ».
Pour les deux mots-clés local et remote, le chemin spécifié peut se terminer par une barre oblique, mais ça n'est pas obligatoire.
Le traitement des permissions des fichiers est contrôlé par le mot-clé permissions , qui peut prendre une de ces trois valeurs :
Vous pouvez utiliser ce mot-clé par exemple pour vous assurer que les permissions de vos scripts CGI soient correctes. Cette option est pour le moment ignorée des serveurs WebDAV. Avec les serveurs FTP, un chmod est exécuté côté serveur pour modifier les permissions.
Les liens symboliques trouvés sur le site local peuvent être au choix ignorés, suivis ou maintenus. En mode « follow », le fichier référencé par un lien symbolique sera remonté à l'emplacement du lien sur le site distant. En mode « maintain », le lien sera aussi créé sur le site distant (voir ci-dessous). Le mode utilisé pour chaque site est spécifié par le mot-clé symlinks , qui peut prendre la valeur ignore, follow ou maintain.
Le mode par défaut est ignore, i.e. les liens symboliques trouvés sur la copie locale du site sont ignorés.
Ce mode est n'actuellement supporté que par les serveurs
WebDAV implémentant WebDAV Advanced Collections, qui est en cours de
développement. Dans ce mode, la cible du lien sur le serveur est
littéralement copié à partir de la cible du lien
symbolique. Astuce : vous pouvez utiliser des URL si vous le
désirez :
ln -s "http://www.quelquepart.org/" quelquepart
De cette façon , un ordre "302 Redirect" peut être facilement mis en place depuis le client, sans altérer la configuration du serveur.
Vous pouvez utiliser l'option nodelete pour empêcher les fichiers distants d'être jamais supprimés. Cela peut être utile si vous conservez de grosses quantités de données sur le serveur, dont vous ne voudriez pas pour autant conserver de copie locale.
Si votre serveur ne permet pas l'écrasement de fichiers existants par ceux que vous remontez, utilisez l'option nooverwrite. Dans ce cas, avant de remonter un fichier, sitecopy supprimera au préalable la copie distante.
Si vous utilisez l'option checkmoved, sitecopy cherchera si des fichiers ont été déplacés localement. Si c'est le cas, lors de la mise à jour du site, ces fichiers seront aussi déplacés sur le site distant.
Avec l'option checkmoved renames, sitecopy cherchera si des fichiers ont été localement déplacés ou renommés. Cette option n'est utilisable qu'en conjonction avec l'option state checksum.
AVERTISSEMENT
Si vous n'utilisez pas de somme de contrôle MD5 pour déterminer l'état des fichiers (i.e. avec l'option state checksum ) N'UTILISEZ PAS non plus l'option checkmoved si vous avez tendance à mettre dans des répertoires différents des fichiers de même nom, taille et date de modification. Le risque d'écrasement est improbable, mais ne dites pas que vous n'aviez pas été prévenu.
Certains fichiers peuvent être ignorés de
sitecopy par l'emploi du mot-clé exclude, qui accepte
des motifs d'expressions rationnelles à la manière du shell.
Par exemple, utilisez
exclude *.bak
exclude *~
exclude "#*#"
pour exclure tous les fichiers qui portent l'extension .bak, se terminent par
un tilde (~) ou qui commencent et se terminent par un dièse.
N'oubliez pas d'échapper ou d'entourer de guillemets le motif s'il
inclut un dièse !
Pour exclure des fichiers d'un répertoire particulier,
préfixez simplement le motif par le nom du répertoire -- en
commençant par une barre oblique. Par exemple,
exclude /docs/*.m4
exclude /files/*.gz
excluera tous les fichiers à l'extension .m4 dans le
sous-répertoire « docs », et tous les
fichiers à l'extension .gz dans le sous-répertoire
« files ».
Un répertoire entier peut également être
exclu -- en omettant la barre oblique à la fin du nom du
répertoire. Par exemple,
exclude /quelque/part
exclude /autre/part
excluera les sous-répertoires du site
« quelque/part » et
« autre/part ».
Les motifs d'exclusion sont examinés lorsque sitecopy parcourt le répertoire local. Un fichier qui correspond à n'importe lequel des motifs ne sera pas ajouté à la liste des fichiers. Cela signifie qu'un fichier déjà remonté sur le serveur qui correspond à un motif d'exclusion sera supprimé du serveur.
Utilisez l'option ignore pour indiquer à sitecopy qu'il doit ignorer les modifications locales apportées aux fichiers du site. Si un changement est fait au contenu d'un fichier ignoré, le fichier ne sera pas remonté sur le serveur en mode mise à jour. Les fichiers ignorés seront toutefois créés, déplacés et supprimés comme en temps normal.
L'option ignore s'utilise de la même manière que l'option exclude.
Notez que le mode synchronisation écrasera les changements apportés aux fichiers ignorés.
Pour spécifier le mode de transfert des fichiers par FTP,
utilisez le mot-clé ascii. Tout fichier
transféré en utilisant le mode ASCII verra ses
caractères de fin de ligne (CRLF/LF) interprétés de
façon appropriée. Par exemple, utilisez
ascii *.pl
pour remonter tous les fichiers à l'extension .pl comme des fichiers
texte ASCII. Ce mot-clé est actuellement sans effet avec les serveurs
WebDAV.
Les valeurs de retour possibles dépendent du mode opératoire. Si plusieurs sites sont spécifiés en ligne de commande, la valeur de retour correspondra aux opérations effectuées pour le dernier des sites spécifiés.
-1 ... la mise à jour n'a pas pu démarrer -
problème de configuration
0 ... la mise à jour s'est parfaitement effectuée.
1 ... il y a eu un problème pendant la mise à jour
2 ... impossible de se connecter ou s'authentifier auprès du
serveur
-1 ... impossible de former la liste - problème de
configuration
0 ... le site distant n'a pas besoin de mise à jour
1 ... le site distant nécessite une mise à jour
Le site de Fred est remonté sur un serveur FTP nommé « my.server.com » et maintenu dans le répertoire « public_html » situé dans le répertoire de connexion. Le site est conservé en local dans le répertoire /home/fred/html.
site mysite
server my.server.com
url http://www.server.com/fred
username fred
password juniper
local /home/fred/html/
remote ~/public_html/
Ici, le site de Freda est remonté sur un serveur FTP nommé « ftp.elsewhere.com » et maintenu dans le répertoire /www/freda. Le site est conservé en local dans le répertoire /home/freda/sites/elsewhere/
site anothersite
server ftp.elsewhere.com
username freda
password blahblahblah
local /home/freda/sites/elsewhere/
remote /www/freda/
# Freda veut ignorer les fichiers à l'extension .bak ou
# se terminant par un ~:
exclude *.bak
exclude *~
Cet exemple montre comment définir un site avec un serveur WebDAV.
site supersite
server dav.wow.com
protocol webdav
username pow
password zap
local /home/joe/www/super/
remote /
~/.sitecopyrc Emplacement par défaut du fichier de
configuration.
~/.sitecopy/ Répertoire de stockage des informations sur les
fichiers du site distant.
~/.netrc Informations relatives aux comptes sur des serveurs
distants.
Problèmes connus : Les modes récupération et synchronisation ne sont PAS fiables avec le protocole FTP. Si vous avez besoin d'opérations atomiques de récupération d'informations et de synchronisation de fichiers, n'utilisez pas sitecopy ; essayez plutôt rsync.
Veuillez envoyer vos rapports d'anomalies et demandes d'améliorations à <sitecopy@lyra.org> plutôt qu'à l'auteur lui-même, puisque la liste de diffusion archive ses messages et les vôtres pourraient être utiles à d'autres utilisateurs.
[Cités seulement pour référence, l'auteur ne revendique aucune conformité à aucun de ces standards.]
RFC 959 - File Transfer Protocol (FTP)
RFC 1521 - Multipurpose Internet Mail Extensions Part One
RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0
RFC 2396 - Uniform Resource Identifiers: Generic Syntax
RFC 2518 - HTTP Extensions for Distributed Authoring -- WEBDAV
RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
RFC 2617 - HTTP Authentication
REC-XML - Extensible Markup Language (XML) 1.0
REC-XML-NAMES - Namespaces in XML
draft-ietf-ftpext-mlst-05.txt - Extensions to FTP
draft-ietf-webdav-collections-protocol-03.txt - WebDAV Advanced
Collections Protocol
Joe Orton et d'autres.
e-mail: sitecopy@lyra.org
www: http://www.lyra.org/sitecopy/
Nicolas Girard <girard_nicolas at yahoo.fr>, 2004.
Il est possible que cette traduction soit imparfaite ou périmée. En cas de doute, veuillez vous reporter au document original en langue anglaise fourni avec le programme.
June 2001 | sitecopy |