sitecopy(1)

NOM
sitecopy - Maintient à jour des copies distantes de sites web

SYNOPSIS
sitecopy [options] [mode opératoire] nomdusite ...

DESCRIPTION
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.

POUR COMMENCER
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.

  Rudiments
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 le site distant existe déjà
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.

  Si le site distant n'existe pas encore
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.

  Maintenance du site
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.

  Problèmes de synchronisation
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.

INVOCATION
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 ».

MODES OPÉRATOIRES

-l, --list
    Mode Liste - produit une liste de toutes les différences entre les fichiers locaux et leur copie distante pour les sites spécifiés.

-ll, --flatlist
    Mode Liste plate - similaire au mode liste, mais la sortie produite convient à une analyse ultérieure par un script externe ou un programme. Le script AWK fourni, changes.awk. produit par exemple une page HTML depuis une sortie produite par ce mode.

-u, --update
    Mode Mise à jour - Met à jour la copie distante des sites spécifiés.

-f, --fetch
    Mode Récupération - Récupère la liste des fichiers du serveur distant. Notez qu'en FTP le support de ce mode est limité -- le serveur doit accepter la commande MDTM , et utiliser un programme « ls » de type Unix comme implémentation de la commande LIST.

-s, --synchronize
    Mode Synchronisation - Met à jour la copie locale du site à partir de la copie distante. AVERTISSEMENT : Ce mode écrase les fichiers locaux. À utiliser avec précaution.

-i, --initialize
    Mode Initialisation - initialise les sites spécifiés, sitecopy pensant alors qu'il n'y a AUCUN fichier sur le serveur distant.

-c, --catchup
    Mode Rendre identique - amène sitecopy à penser que les copies locale et distante du site sont identiques.

-v, --view
    Mode Voir configuration - Affiche toutes les définitions de sites du fichier de configuration.

-h, --help
    Affiche un message d'aide.

-V, --version
    Affiche le numéro de version.

OPTIONS

-y, --prompting
    Valable seulement pour le Mode Mise à jour , demande à l'utilisateur de confirmer chaque mise à jour (i.e., création d'un répertoire, remontée d'un fichier sur le site distant, etc.).

-r FICHIER, --rcfile=FICHIER
    Spécifie un fichier de configuration alternatif pour l'exécution en cours.

-p RÉPERTOIRE, --storepath=RÉPERTOIRE
    Spécifie un chemin d'accès alternatif au répertoire contenant les informations sur les fichiers du site distant, pour l'exécution en cours.

-q, --quiet
    Sortie discrète - n'affiche que le nom du fichier pour chaque mise à jour effectuée.

-qq, --silent
    Sortie silencieuse - n'affiche aucune information lors des mises à jour.

-o, --show-progress
    Valable seulement pour le Mode Mise à jour , affiche la progression (sous forme de pourcentage effectué) du transfert de données.

-k, --keep-going
    Passe outre les erreurs en Mode Mise à jour ou en Mode Synchronisation

-a, --allsites
    Exécute l'opération donnée pour tous les sites - valable pour tous les modes, sauf le Mode Voir configuration , pour lequel cette option est sans effet.

-d MASQUE, --debug=CLÉ[,CLÉ...]
    Affiche des informations de débogage. Vous devez donner une liste de mots-clés séparés par une virgule. Chaque mot-clé peut être, au choix :
      socket Manipulation des sockets
      files Manipulation des fichiers
      rcfile Analyseur du fichier de configuration
      http Pilote HTTP
      httpbody Affiche le corps des réponses HTTP
      ftp Pilote FTP
      xml Informations d'analyse syntaxique XML
      xmlparse Informations d'analyse syntaxique XML de bas niveau
      httpauth Informations d'authentification HTTP
      cleartext Affiche les mots de passe en clair 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

CONCEPTS
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.

CONFIGURATION
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.

  Définition d'un site
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 ]
 [ http secure ]
 [ 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 "*#"

  Options pour le serveur distant
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.

  État des fichiers
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é.

  Mode Sécurisé
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).

  Emplacements de stockage des fichiers du site
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.

  Traitement des permissions des fichiers
Le traitement des permissions des fichiers est contrôlé par le mot-clé permissions , qui peut prendre une de ces trois valeurs :

ignore
    pour ignorer complètement les permissions des fichiers,

exec
    pour propager les permissions des fichiers exécutables uniquement,

all pour propager les permissions de tous les fichiers.

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.

  Traitement des liens symboliques
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.

  Maintenance des liens symboliques
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.

  Suppression et déplacememnt des fichiers distants
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.

  Exclure des fichiers
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.

  Ignorer les changements des fichiers locaux
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.

  Mode de transfert par FTP
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.

VALEURS DE RETOUR
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.

  Pour le mode mise à jour
 -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

  Pour le mode liste (mode par défaut)
 -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

CONTENU DU FICHIER DE CONFIGURATION D'EXEMPLE

  Serveur FTP, usage simple
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/

  Serveur FTP, usage avancé
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 *~

  Serveur WebDAV, usage simple
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 /

FICHIERS
~/.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.

BOGUES
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.

VOIR AUSSI
rsync(1), ftp(1), mirror(1)

STANDARDS
[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

ÉBAUCHES DE STANDARDS
draft-ietf-ftpext-mlst-05.txt - Extensions to FTP
draft-ietf-webdav-collections-protocol-03.txt - WebDAV Advanced Collections Protocol

AUTEURS
Joe Orton et d'autres.
e-mail: sitecopy@lyra.org
www: http://www.lyra.org/sitecopy/

TRADUCTION
Nicolas Girard <girard_nicolas at yahoo.fr>, 2004.

AVERTISSEMENT SUR LA TRADUCTION
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.