Dupliquer un site

Un article de ClissXXI.

Votre hébergeur vous propose un accès FTP, et malheureusement pas de rsync?

[modifier] Avec wget

Pour rapatrier votre site en ligne de commande:

  • Créez un ~/.netrc:
machine ftp.hebergeur.org login monlogin password monmotdepasse
  • Appliquer les bonnes permissions:
chmod 600 ~/.netrc
  • Puis utilisez wget:
wget -r ftp://ftp.hebergeur.org

Note: ne pas utiliser -c/--continue pour mettre à jour la copie: -c permet de reprendre un téléchargement interrompu, et non pas de mettre un fichier à jour. Vous devez relancer la même commande, qui effectuera à nouveau un téléchargement complet du site.

D'autres outils permettent d'utiliser la date de dernière modification et la taille du fichier comme heuristique, afin d'éviter un téléchargement superflu.

[modifier] Autres

On peut aussi utiliser gFTP. lftp permet de faire des trucs sympa aussi :

  • complétion
  • rm -r <répertoire>
  • mirror -R source dest ( -R --reverse reverse mirror <--> put files ).
  • Sur certains serveurs qui masquent les fichiers '.' il faut taper d'abord:
set ftp:list-options -a
  • -e: supprimer les fichiers présents uniquement en local
  • Si même nom, ne pas préciser :
mirror -R rep
mirror -R .
  • Lancer une commande en local :
!ls


Enfin une recherche chez packages.debian.org sur 'mirror' présente 'mirror', 'fmirror' et 'ftpmirror',


Exemple de session:

$ lftp ftp.ouvaton.org
lftp ftp.ouvaton.org:~> user cliss21
Password: *****
lftp cliss21@ftp.ouvaton.org:/> mirror html/
Total: 34 directories, 740 files, 0 symlinks
New: 740 files, 0 symlinks

Ou en une ligne, sur un autre exemple:

# lftp clisscoop@ftp.ouvaton.org -e "mirror html/ www/"
Password:
Total: 170 directories, 1186 files, 0 symlinks
New: 1186 files, 0 symlinks

Ou encore:

touch ~/.netrc
chmod 600 ~/.netrc
echo "machine ftp.monservice.tld login moncompte password monmotdepasse" >> ~/.netrc
lftp moncompte@ftp.monservice.tld -e 'set ftp:list-options -a; mirror -e . copy/; exit'

Si on relance un mirror, lftp tente de ne télécharger que ce qui a été modifié.

[modifier] Gestion des droits avec suPHP

Si vous utilisez suPHP, je propose:

chown -R user: .
find -type f -print0 | xargs -0 chmod 644
find -type f -name "*.php*" -print0 | xargs -0 chmod 600