Comment synchroniser automatiquement le contenu d'un dossier local avec le contenu d'un dossier ftp?

9

Après avoir cherché partout, je n'ai pas réussi à trouver une réponse spécifique à ma question.

Sous Windows, il existe une application appelée FTPbox qui synchronisera automatiquement un dossier local avec un ftp à chaque période définie.

Ma question est, comment puis-je réaliser la même chose en utilisant Ubuntu? L'essentiel est ici que je ne veux pas avoir à le faire manuellement. Ce doit être un processus totalement automatique sans aucune intervention humaine requise (évidemment, je devrai mettre cela en place si cette classe est l'intervention humaine LOL).

Merci beaucoup en prévision de réponses utiles.

-Edward

Edward Nunn
la source

Réponses:

16

Première solution

Installer lftp

sudo apt-get install lftp

après cela, créer un script

#!/bin/bash
HOST='mysite.com'
USER='myuser'
PASS='myuser'
TARGETFOLDER='/new'
SOURCEFOLDER='/home/myuser/backups'

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
bye
"

Enregistrez-le sur un endroit avec un nom upload.sh. Donnez-lui la +xpermission.

sudo chmod +x /path_to_script/upload.sh

Programme crontabd' installation pour exécuter cette commande à chaque xpériode de temps

Pour modifier l'exécution de crontab

crontab -e

Pour exécuter la commande toutes les 5 minutes, le code est

 */5 * * * * /path_to_script/upload.sh

toutes les heures

 0 */1 * * * /path_to_script/upload.sh

courir à 4 heures du matin

 0 4 * * * /path_to_script/upload.sh

Solution deux

Créez un petit script simple appelé lftp-scriptqui LFTPpeut lire:

open ftp://username:[email protected]
mirror -v --only-newer /home/local/path/ /website.com/public_html/

Enfin, vous pouvez exécuter LFTPet démarrer la synchronisation. Définissez crontab comme j'écris mais mettez la commande

lftp -f /path/to/lftp-script

quelque chose comme ça

 */5 * * * * lftp -f /path/to/lftp-script

Solution trois

Installer curlftpfs

sudo apt-get install curlftpfs

que vous devez faire pour monter ftp localement est d'exécuter ces commandes create dir witch sera synchronisé

mkdir hostr

monter le répertoire ftp distant sur le local

sudo curlftpfs -o allow_other ftp://user:[email protected] host

user: pass est le nom d'utilisateur et le mot de passe pour se connecter au compte ftp.

Vous pouvez ajouter curlftpfsà fstabpour le montage automatique en utilisant cette ligne:

curlftpfs#user:[email protected] /mnt/host fuse rw,uid=500,user,noauto 0 0
2707974
la source
1
TARGETFOLDER = '/ new' = dossier sur ftp? SOURCEFOLDER = '/ home / myuser / backups' = dossier local avec les fichiers que je veux télécharger?
Edward Nunn
Oui et oui. :)
2707974
disant ce fichier de transfert Untitled 1.odt' mirror: /home/edward/bl3/bl2/bl1/Untitled 1.odt: No such file or directory Unknown command ; '
Edward Nunn
Basé sur le chemin du serveur ftp meybe non seulement le /newdossier. Vérifiez les deux chemins.
2707974
Si vous créez un dossier dans source folderlocal, ce dossier doit être synchronisé avec le dossier ftp.
2707974