 dupliquer automatiquement tous les fichiers d un serveur distant sur un serveur local but de ce document ce document contient un programme php permettant de sauvegarder et dupliquer sur un serveur local l ensemble des fichiers d un site distant le but final étant de dupliquer un site sous spip ou un wikini ou tout autre programme en php mysql d un serveur distant sur un serveur local sans aucune intervention manuelle pour cela j utilise un autre programme en complément de celuici pour sauvegarder la base de données mysql description des fonctionnalités du programme ce programme permet via ftp de sauvegarder toute l architecture du site et donc de faire une sauvegarde récursive de tous les répertoires l architecture des répertoires distants est reconstituée en local dans le but d optimiser le temps de téléchargement le programme ne télécharge les fichiers que ci ceuxci sont plus récents que les fichiers en local il est possible également d indiquer une taille maxi des fichiers à télécharger par défaut 1024 ko il est possible également d indiquer une liste de dossiers à exclure du téléchargement ce programme tient compte de la date de modifications des fichiers et ne télécharge les fichiers que si ceuxci sont plus récents que les fichiers présents en local le programme pour faire fonctionner ce programme il faut renseigner le nom du serveur l utilisateur le mot de passe le dossier local de destination le dossier distant à sauvegarder et la taille maxi des fichiers à télécharger il est possible d indiquer dans la variable excluredossier la liste des dossiers à exclure du téléchargement ce programme se lance sur le poste local directement en ligne de commande usr bin php php serveur ftpcoagulorg login monlogin motdepasse monpass dossierlocal var www coagul dossierdistant html taillemaxi 1024 taille maxi en ko à télécharger liste des dossiers distant à exclure du téléchargement excluredossier array html cache echo sauvegarde débuté à date g i s n n chdir dossierlocal change le répertoire de destination des fichiers connexion ftpconnect serveur or die serveur serveur non disponible n ftplogin connexion login motdepasse or die utilisateur login ou mot de passe inconnu n ftpchdir connexion dossierdistant ftpclose ftpclose connexion listfich scanftp serveur login motdepasse dossierdistant depth 1 taillemaxi excluredossier ftpclose ftpclose connexion echo sauvegarde terminée à date g i s n n function scanftp host login pass path depth 1 taillemaxi excluredossier echo n n n path n n n if inarray path excluredossier true echo attention dossier path exclu n else if isstring host connid ftpconnect host loginresult ftplogin connid login pass if connid loginresult echo impossible de se connecter à host sous login n return array else connid host retour array fichiers ftprawlist connid path foreach fichiers as fichier details pregsplit s fichier si la premiere lettre est un d c est un dossier if substr details 001 d le nom du fichier est en neuvieme position if depth 0 retour details 8 array dossier non scanne else dossierdest details 8 echo ntraitement du dossier dossierdest n if fileexists dossierdest false mkdir dossierdest 0700 chdir dossierdest change le répertoire de destination des fichiers retour details 8 scanftp connid path details 8 depth 1 taillemaxi excluredossier else lefichier details 8 retour lefichier taillefichier round ftpsize connid path lefichier 1024 datedistant ftpmdtm connid path lefichier if fileexists lefichier datelocal filemtime lefichier else datelocal 0 toto filemtime lefichier echo getcwd toto n affiche le répertoire en cours echo toto n if datedistant datelocal if taillefichier taillemaxi echo lefichier taillefichier kp date f d y h i s datedistant date f d y h i s datelocal n ftpget connid filetmp path lefichier ftpbinary rename filetmp lefichier touch lefichier datedistant permet de changer la date de modification du fichier else echo attention lefichier de taillefichier ko non téléchargé car supérieur à taillemaxi ko n chdir return retour  modifier les fichiers de configuration des programmes en local pour fonctionner un programme en php a besoins de plusieurs paramètres pour se connecter à la base de données mysql chaque programme php mysql dispose donc d un fichier de configuration spécial qu il est nécessaire de modifier manuellement au moins lors de la première duplication pour pouvoir fonctionner en local normalement lors des duplications suivantes cette étape ne sera pas nécessaire car le fichier local sera plus récent que le fichier distant et ne sera donc pas remplacé par le script de duplication spip ecrire incconnectphp3 pour faire fonctionner spip en local il faut supprimer ou renommer le fichier ecrire incconnectphp3 et écrire l url suivant dans un navigateur et répondre aux questions posées http localhost dossierdusitespip ecrire il faut aller ensuite dans administration du site et renseigner la zone adresse url du site public  wikini wakkaconfigphp pour faire fonctionner un wikini il faut modifier manuellement le fichier wakkaconfigphp  phpmyadmin configincphp pour faire fonctionner phpmyadmin il faut modifier manuellement le fichier configincphp  historique des modifications version date commentaire 01 040505 création par tony galmiche  dupliquer automatiquement tous les fichiers d un serveur dista merci tony il y avais le login pass du ftp de coagul en brut dans ton script   dupliquer automatiquement tous les fichiers d un serveur dista pour ceu qui sont derrière firewall vous pouvez avoir quelque soucis mettez donc activation du mode passif ftppasv connexion true après ftplogin connexion login motdepasse or die utilisateur login ou mot de passe inconnu n   dupliquer automatiquement tous les fichiers d un serveur dista il semble qu il y est aussi des problèmes avec les espace dans les nom de dossier dans la fonction ftprawlist connid path si quelqu un peux m aider merci  ftp  