PHP FTP Synchronizer. Mise en ligne de site Web

Programme gratuit pour mettre à jour votre site Web à partir des fichiers locaux. PHP FTP Synchronizer parcourt récursivement l'arborescence du répertoire et met à jour le répertoire équivalent sur le site, en remplaçant les fichiers qui ont été modifiés. Il teste les liens brisés dans la page et met à jour la carte de site.

PHP FTP Synchronizer est un script dont le code source est en langage Scriptol et produit un exécutable PHP. Compiler le source requiert le compilateur Scriptol 2.
Il fonctionne en ligne de commande.

Spécificités du programme

Par rapport aux divers programmes existants et pour la plupart commerciaux, le synchroniseur offre des options d'accélération:

En outre le programme exécutable est un script en PHP, il fonctionne donc sur tous les systèmes, Windows, Linux, Mac... Et vous pouvez étendre ses possibilités si besoin.

Comment le programme fonctionne

Les paramètres utiles étant donnés (voir ci-dessous), le programme dispose du chemin de vos fichiers, du nom du site (ftp.xxxx.tld), votre login et mot de passe, du chemin sur l'hébergement si on ne copie pas à la racine, ainsi que des options choisies.
Il lit chaque fichier en parcourant de façon récursive le répertoire et les sous-répertoires, le compare avec le fichier distant s'il existe, et le copie ou le remplace.
Si l'option d'accélération est choisie, il compare le fichier avec le backup quand à la date précise ou le contenu au choix, puis s'ils sont différents télécharge le fichier, le copie sur le backup et synchronise la date de fichier du backup sur celle de la source.

Installation

Téléchargez PHP et extrayez le dans un répertoire, par exemple:

 c:\php\

Sous Windows il faut inclure ce répertoire dans la variable PATH.

Tapez "env" dans le champ de recherche de la barre des tâches, sélectionnez "path" et cliquez sur le bouton modifier. Ajoutez cette ligne:

c:\php\.

Dans le répertoire php, renommez php.ini-production en php.ini

Ajouter l'extension ftp. Editez ce fichier php.ini pour supprimer ";" devant ftp dans la liste des extensions.

Utilisation de curl

Le test de liens est plus rapide avec curl et il permet aussi de vérifier les liens en https.

Pour activer curl, supprimer ";" devant l'extension curl dans php.ini.
Pour vérifier que ce fichier ini est celui qui est pris en compte, tapez:

php --ini  

Cela donnera le chemin du fichier ini chargé.

Limite de mémoire

Si le programme PHP vous dit que la mémoire est saturée ("exhausted"), vous pouvez aussi augmenter la limite dans php.ini:

memory_limit = 1024M  

Comment on utilise PHP FTP Synchronizer

On ouvre l'invite de commande sous Windows ou une console sous Linux ou Mac.
On passe une commande sous la forme:

solp ftpsync [options] [paramètres] url

ou directement en PHP:

php ftpsync.php [options] [paramètres] url

Les textes entre crochets [] sont optionnels.

Exemple:

php ftpsync.php -v -llogin -pmotdepass -fftp.example.com -dw:\example\ -bf:\example\ -wwww.example.com

Les options qui sont détaillées dans le manuel permettent de passer tous les paramètres requis. Si un paramètre manque, le programme vous le demande. Mais si une option est donnée et qu'elle requiert un paramètre, celui-ci doit être fourni dans commande, il n'est pas demandé par le programme qui dans ce cas affiche une erreur.

Programme et manuel

Manuel d'utilisation de PHP FTP Synchronizer.

Télécharger PHP FTP organizer


Problèmes possibles


Forum

ftpsync[options][paramètres]dirsource[url]

15-11-2008 15:45:31

phillag

Je ne comprends pas comment une commande php peut avoir cette syntaxe. ou sont les caractères "?" et "&" pour passer les paramètres? comment l'interpréteur php peut-il comprendre les crochets? où se trouve la déclaration de la librairie syncroniser? au début de la page php? dans le fichier php.ini et sous quelle forme? merci de votre aide.
19-11-2008 14:51:47

webmaster

La commande ftpsync.php s'utilise en ligne de commande. Les paramètres sont donc récupérés directement par le programme dans la liste des arguments de la fonction principale:
function main($argc, $argv)
tandis que celle-ci est appelée à la racine du script:
main($argc, $argv)
ces variables sont des variable globales définies automatiquement. C'est seulement lorsque un script est appelé par les commandes http (POST) que les codes & etc. sont utilisés. Les crochets sont destinés au manuel et non au programme. Ils représentent un paramètre optionnel. Dans la commande effective, on remplace les crochets et leur contenu par un paramètre.

La cible et la source

15-11-2008 14:57:58

phillag

bonjour, je voudrais utiliser ftp synchroniser mais je ne comprends pas la doc. j'utilise en local un serveur apache avec easyphp et je veux envoyer un ensemble de fichiers contenu dans un répertoire local vers un site hébergé chez un hébergeur mutualisé. ftpsync[options][paramètres]dirsource[url]je ne comprends pas ou se trouve la cible et la source dans cette syntaxe. dirsource[url]???? C'est l'url ou bien l'URI? pourquoi a-t-elle une forme ftp.scriptol.fr? alors qu'elle est censée être la source? Dans mon cas les fichier source (ceux qui doivent être envoyés vers le serveur mutualisé par ftp) se trouvent en local donc de la forme: http://localhost/rep/sous_rep/ ou bien h:/rep/sousrep/ laquelle des deux formes utiliser? et je mets ça ou? dans dirsource[url]ou bien dans dwww? Ensuite les fichier cibles (ceux qui résultent de la copie des fichiers sources se trouvant en localhost) se trouvent sur une aire accessible par: ftp.donhost.co.uk login:monlogin passe:monpasse ftp.donhost.co.uk?? je mets ça ou? dans dirsource[url]ou bien dans dwww? merci de votre aide
19-11-2008 14:47:11

webmaster

Bonjour Supposons que le contenu du site soit dans le répertoire www Que les sources soient dans le fichier local h:/rep/sourep/ Cette commande devrait marcher.
php ftpsync.php h:/rep/sourep/ -llogin -pmonpasse -dwww ftp.example.com
L'URL est reconnue comme telle si elle commence par ftp.

Inverser le fonctionnement

11-11-2009 18:43:03

hugo69

Bonjour, Je trouve FTP Sync au top, et je me demandais si il était possible d'inverser son fonctionnement. Le but étant pour moi,que les fichiers distants soient la source, et les locaux, ceux qui seront écrasés. Ainsi, si je mets une mise à jour sur le site, tous les postes qui iront chercher périodiquement sur le site, pourront faire leur mise à jour. Tx !
13-11-2009 13:30:41

webmaster

Bonjour, dans le principe, il faudrait remplacer la fonction ftp_put
if ftp_put(connection, rmt, src, $(FTP_BINARY)) = true
par la fonction ftp_get. Mais cela s'accompagnera aussi de nombreuses autres modifications dans le programme. Je suis un peu trop surchargé en ce moment pour envisager ce travail moi-même...
13-11-2009 13:34:38

hugo69

dans le principe, il faudrait remplacer la fonction ftp_put
if ftp_put(connection, rmt, src, $(FTP_BINARY)) = true
par la fonction ftp_get. Mais cela s'accompagnera aussi de nombreuses autres modifications dans le programme. Je suis un peu trop surchargé en ce moment pour envisager ce travail moi-même...
Oui, j'y avais pensé, mais le problème est que tous les listings et controles sont différents en local et en distant... Du coup, il faut faire beaucoup de changements... et plutot que de passer des heures à modifier ce script, je me disais que qqun avait du avoir le même problème t l'avait déja adapté ou trouver un script similaire... Celui ci étant si bien, ca aurait été top ...