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

