Unix quelconque:
J'ai la ligne suivante de cmd qui fonctionne bien.
rsync -avr -e ssh /home/dir [email protected]:/home/
Mais je dois le configurer maintenant pour rsync sur un serveur distant qui ne dispose que d’un serveur FTP. Comment vais-je à ce sujet?
J'ai regardé l'aide de rsync mais je me suis vite perdu (je ne fais pas ce genre de choses très souvent).
Réponses:
Vous pas. rsync ne peut pas le faire pour vous, c'est un protocole qui lui est propre et qui ne fonctionne pas par FTP.
Cependant, vous voudrez peut-être essayer csync . IIRC fournit un comportement de type rsync sur HTTP. Je ne peux pas dire si cela fonctionne via FTP, vous devrez l'essayer.
la source
rsync ne fonctionnera pas pour vous pour les raisons que d'autres ont mentionnées. Cependant, lftp et ncftp ont tous deux un mode "miroir" qui répondra probablement à vos besoins.
J'utilise ceci pour transférer des éléments de mon répertoire local vers un hôte Web ftp ou sftp:
la source
wput
qui a la limitation de bande passante intégrée.Comme écrit par le chevalet ,
lftp
est un bon outil.Je vous suggère de paramétrer le script et d’utiliser le
options, qui exclut les noms de fichiers utilisant la fonction glob (* ,? ..) de votre shell:
Avertissement: assurez-vous que le répertoire cible existe, sinon la commande cd échouera. Par conséquent, les opérations, y compris la suppression des arborescences de fichiers, seront exécutées dans un répertoire incorrect (racine)!
J'ai mis à jour le script pour que cette
--delete
option soit désactivée par défaut, activez-la en retirant le commentaireDELETE= command
.la source
cd $RCD
, afin d'éviter un script avec-une-typo de la suppression accidentelle des fichiers du mauvais répertoire:set cmd:fail-exit yes
. (Il semblelftp
ne pas remarquer qu'il a effectivement quitté, jusqu'à ce que vous émettez la commande suivante.) - Et avant quecd $LCD
je fais (dans la coquille locale, qui est, au sommet du scrip):set -eu
.mirror
, et donc--delete
: d les fichiers du mauvais répertoire. (Mais je les ai copiées à nouveau, donc dans ce cas, cela importait peu. Peut-être que ça importait pour quelqu'un d'autre.)Selon ce que vous essayez réellement de faire, une autre approche complètement différente pourrait être utilisée
curlftps
pour monter un dossier ftp, et peutrsync
- être ensuite les deux dossiers "locaux".L’installation étant différente selon votre distribution, je ne peux donc pas généraliser, mais vous devez installer
fuse
etcurlftpfs
(Debly a déjàfuse
installé Debian par défaut), puis:sudo apt-get install curlftpfs
Assurez-vous que le
fuse
module est chargé (modprobe fuse
)sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other
Notez qu'il n'y a pas d'espace après la dernière virgule (ce n'est pas une faute de frappe!). Si vous êtes satisfait de cela ou si vous ne voulez pas le faire à chaque fois, vous pouvez l'ajouter à votre fstab (généralement dans
/etc/fstab
):Dans ce cas, vous devez vous assurer que le module de fusible est chargé avant.
Soyez avisé de deux choses:
curlftpfs
pourrait échouer (peut-être que vous pouvez faire quelque chose avec le.netrc
).la source
umount DIR
oùDIR
était votre/path/to/ftp/folder
dessus.Il y a weex ...
la source
$ weex yourFTPconfigName
le lancezrsync ne fonctionne pas sur ftp. Du côté distant, il lui faut soit le démon rsync, soit un shell à partir duquel il peut appeler rsync. Ftp vous permet généralement d’appeler quelques commandes et rsync n’en fait pas partie. Il existe d'autres outils destinés à automatiser des tâches ftp tels que "lftp".
la source
Cela semble être un bon ajustement gratuit: https://savannah.gnu.org/projects/ftpsync/
la source
Pour ce que vous essayez de faire, vous pouvez également utiliser wget.
wget -m ftp: // nom d'utilisateur: [email protected]
la source
Vous pouvez utiliser curlftpfs pour monter ftp et utiliser rsync après http://linux.die.net/man/1/curlftpfs
la source
J'utilise GVFS / FTP. Je monte mes serveurs FTP distants avec gigolo. Comme ils sont vus comme des répertoires locaux, presque tout ce qui fonctionne sur des fichiers locaux fonctionne. rsync est conçu pour calculer les hachages de fichiers à distance afin de comparer des fichiers sans les transférer, mais le faire avec des fichiers virtuels les transfère quand même. unison et freefilesync fonctionnent normalement bien, mais j'ai rencontré un problème lorsqu'ils veulent renommer un fichier téléchargé, pas de problème de téléchargement. Ceci pourrait être un problème avec gvfs 1.6.1.
la source
La solution de Jonas S peut être utile selon les circonstances. Par exemple, si vous avez une vitesse de téléchargement élevée et un téléchargement lent, la vérification des fichiers sur le serveur peut s'avérer relativement plus rapide que le téléchargement inutile de fichiers.
Vous voudrez probablement utiliser CurlFTPFS, cependant: http://packages.ubuntu.com/search?suite=default§ion=all&arch=any&searchon=names&keywords=curlftpfs
Bien qu'en règle générale, il vaut mieux utiliser un client FTP ordinaire plutôt que rsync.
la source
Je ne crois pas que vous pourrez faire cela, le serveur que vous essayez de faire fonctionner avec Rsync ne fera qu'exécuter un serveur FTP, il ne comprendra pas les commandes envoyées par Rsync.
Si vous voulez faire cela, c'est que vous n'avez accès qu'au port 21, mais que vous avez le contrôle du serveur, vous pouvez modifier le port que Rsync écoute, sur le serveur, mais cela n'est évidemment utile que si vous ne le faites pas. vouloir utiliser FTP sur ce port.
la source
Si vous souhaitez automatiser la tâche, utilisez lftp, car vous pouvez créer un script comme certains l’ont indiqué ci-dessus. Vous pouvez également écrire le script à votre guise, si vous recherchez une solution unique (c’est-à-dire que vous devez télécharger un site Web entier. via ftp / déplacez-le sur un autre serveur) utilisez ncftp, son simple, installez-le s'il n'est pas déjà installé:
ou
(désolé distributions non debian / à chapeau rouge ..)
une fois installé, ouvrez ncftp dans le terminal puis tapez:
Il vous demandera le mot de passe, entrez-le, puis:
Ça fera le reste du travail pour vous .. bonne chance
la source
L'utilisation de «sitecopy» ou «mirror» peut vous faire économiser beaucoup de bande passante.
Ils gèrent tous les deux une mise à jour incrémentielle efficace.
la source
Il y a aussi wput:
Le nom d'utilisateur et le mot de passe sont lus depuis ~ / .netrc. Sinon, si vous n'êtes pas particulièrement concerné par la sécurité, vous pouvez les fournir sous la forme ftp: // nom d'utilisateur: [email protected] .
la source
J'ai créé mon propre outil de ligne de commande pour cela: ftpsync
Pourquoi? Parce qu’il est simple et élégant, d’autres outils nécessitent beaucoup de dépendances, parfois la compilation, parfois ne fonctionne pas (par exemple, lftp sur MacOs High Sierra). Ftpsync est écrit en Python pur, ne nécessite pas de bibliothèque tierce partie et c'est petit, vous pouvez simplement inclure le fichier dans votre projet.
Utilisation: cd dans le répertoire de votre projet et tapez:
--delete
signifie supprimer des fichiers distants qui n'existent pas localement.Si vous ne voulez pas synchroniser mais simplement lancer une commande ftp brute, utilisez:
C'est utile pour des opérations simples comme envoyer un fichier et le renommer:
la source
rclone est un logiciel qui effectue la synchronisation d'annuaire via FTP et de nombreux autres protocoles, y compris les fournisseurs de stockage en cloud (Amazon S3, Dropbox, Google Drive). Il peut se synchroniser vers / depuis toute combinaison de stockage local ou distant.
Pour installer une
ftp
télécommande, suivez ces instructions .Une fois que cela est fait, l'opération de synchronisation est la suivante:
la source
Installez sftp et vous pourrez utiliser rsync.
J'utilise le suivant.
la source