Dupliquer un site

De ClissXXI.

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

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.

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

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
Outils personnels