Dupliquer un site
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