Как использовать rsync по FTP

AFAIK, потому что вся разработка для XP закончилась, не будет инструментом, созданным или бэкпортированным для управления Hyper-V.

Вы могли создать VM с Win7 для Виртуального ПК, который будет работать на Xp.

189
задан 6 March 2014 в 05:59
18 ответов

Вы не делаете. rsync не может сделать этого для Вас, это - собственный протокол и не работает по FTP.

Вы могли бы, однако, хотеть попробовать csync. IIRC это обеспечивает подобное rsync поведение по HTTP. Я не могу прокомментировать, работает ли это по FTP, необходимо будет попробовать его.

78
ответ дан 16 December 2019 в 22:45

Установите sftp, и затем можно использовать rsync.

Я использую следующий.

rsync --delete --times --recursive --perms --owner --group --verbose --progress --stats -e ssh root@192.168.0.100:/folder1/ /folder2/
-7
ответ дан 16 December 2019 в 22:45
  • 1
    Это не FTP, он, вероятно, использует sftp подсистему, внутреннюю для SSH (по крайней мере, that' s, что это делает в конфигурации по умолчанию), –  serverhorror 12 June 2009 в 15:27
  • 2
    csync (sftp) и rsync могут быть тем же способом работать –  Rajat 12 June 2009 в 15:34

Я не полагаю, что Вы сможете сделать это, сервер, к которому Вы пробуете к Rsync, будет только иметь выполнение FTP-сервера, это не поймет команды, что Rsync отправляет его.

Если причина, которую Вы хотите сделать, это - то, что у Вас только есть доступ к порту 21, но Вы имеете контроль над сервером, можно измениться, порт Rsync слушает на на сервере, но это очевидно только полезно, если Вы не хотите использовать FTP на том порте.

2
ответ дан 16 December 2019 в 22:45

Это походит на хорошее и свободное соответствие: https://savannah.gnu.org/projects/ftpsync/

8
ответ дан 16 December 2019 в 22:45

rsync не работает по ftp. На удаленной стороне этому нужны или rsync демон или в оболочка, от которой это может назвать rsync. Ftp обычно позволяет Вам называть несколько команд, и rsync не является одним из них. Существуют другие инструменты, предназначенные для автоматизации задач ftp как "lftp".

9
ответ дан 16 December 2019 в 22:45

rsync не собирается работать на Вас по причинам, которые упомянули другие. Однако lftp и ncftp оба имеют "зеркальные" режимы, которые, вероятно, удовлетворят Ваши потребности.

Я использую это для продвижения материала от моего локального каталога до ftp или sftp веб-хоста:

lftp -c "set ftp:list-options -a;
open ftp://user:password@your.ftp.com; 
lcd ./web;
cd /web/public_html;
mirror --reverse --delete --use-cache --verbose --allow-chown  
--allow-suid --no-umask --parallel=2 --exclude-glob .svn"
163
ответ дан 16 December 2019 в 22:45

Существует weex...

Weex является утилитой, разработанной для автоматизации задачи удаленного поддержания веб-страницы или другого архива FTP. Это будет синхронизировать ряд локальных файлов с удаленным сервером путем выполнения загрузок, и удаленный удаляет как требуется.

16
ответ дан 16 December 2019 в 22:45

Решение S Jonas может быть полезным в зависимости от обстоятельства, например, если у Вас есть высокая скорость загрузки и медленная загрузка, проверяя, что файлы на сервере могли бы быть относительно быстрее, чем загрузка файлов излишне.

Вы, вероятно, хотите использовать CurlFTPFS, хотя: http://packages.ubuntu.com/search?suite=default&section=all&arch=any&searchon=names&keywords=curlftpfs

Хотя, обычно, лучше использовать постоянный клиент FTP в целом вместо rsync.

3
ответ дан 16 December 2019 в 22:45

Как записано мольбертом, lftp хороший инструмент.

Я предлагаю, чтобы Вы параметризовали сценарий и использовали

exclude-glob

опции, который исключает имена файлов, использующие функцию шарика (*?..) Вашей оболочки:

#!/bin/bash    
HOST="your.ftp.host.dom"
USER="username"
PASS="password"
FTPURL="ftp://$USER:$PASS@$HOST"
LCD="/path/of/your/local/dir"
RCD="/path/of/your/remote/dir"
#DELETE="--delete"
lftp -c "set ftp:list-options -a;
open '$FTPURL';
lcd $LCD;
cd $RCD;
mirror --reverse \
       $DELETE \
       --verbose \
       --exclude-glob a-dir-to-exclude/ \
       --exclude-glob a-file-to-exclude \
       --exclude-glob a-file-group-to-exclude* \
       --exclude-glob other-files-to-exclude"

Предупреждение: удостоверьтесь, что целевой каталог существует, иначе команда CD перестанет работать, таким образом, операция включая удаление деревьев файлов произойдет в неправильном каталоге (корень)!

Я обновил сценарий так, чтобы --delete опция отключена defaut, включите его путем некомментария DELETE= command.

123
ответ дан 16 December 2019 в 22:45
  • 1
    Помогший меня большой набор. Но я должен был удалить "набор ftp:list-options-a"; который, где портить материал. –  mat 16 November 2010 в 22:33

Поскольку, что кажется, что Вы пытаетесь сделать, Вы могли также использовать wget.

wget-m ftp://username:password@domain.com

7
ответ дан 16 December 2019 в 22:45

Используя “sitecopy” или “зеркало” может сохранить Вас много пропускной способности.

Они оба обрабатывают эффективное инкрементное обновление.

1
ответ дан 16 December 2019 в 22:45

В зависимости от того, что Вы на самом деле пытаетесь сделать, другой совершенно другой подход мог быть использованием curlftps смонтировать папку ftp, и затем возможно, rsync две "локальных" папки.

Установка отличается в зависимости от Вашего дистрибутива, таким образом, я не могу сделать вывод на этом, но необходимо установитьfuse и curlftpfs (пролил Debian уже имеет fuse установите по умолчанию), затем:

  1. sudo apt-get install curlftpfs

  2. Удостоверьтесь fuse модуль загружается (modprobe fuse)

  3. sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other

Обратите внимание, что нет никакого пространства после последней запятой (это не опечатка!). Если Вы удовлетворены этим или не хотите делать тот каждый раз, когда можно добавить его к fstab (обычно в /etc/fstab):

curlftpfs#user:password@ftp.yourserver.com /path/to/ftp/folder/ fuse auto,user,uid=1000,allow_other 0 0

В этом случае необходимо удостовериться, что модуль предохранителя загружается прежде.

Следует иметь в виду хотя двух вещей:

  • То, что разработчик отбросил проект один или два года назад, таким образом, я не знаю как применимый/стабильный в настоящее время.
  • Если пароль содержит странный символ curlftpfs мог перестать работать (возможно, можно сделать что-то с .netrc).
25
ответ дан 16 December 2019 в 22:45

Если Вы хотите автоматизировать задачу, затем используют lftp, поскольку можно создать сценарий, поскольку некоторые люди отправили выше, можно написать сценарий всего этого действительно легко к симпатии, если поиск одного решения времени (т.е. Вы должны загрузить весь веб-сайт через ftp / перемещается, это к другому серверу) используют ncftp, его простое, устанавливают его если не уже установленный:

apt-get install ncftp

или

yum install ncftp

(извините не debian/red основанные на шляпе дистрибутивы..)

после того, как установленные, открытые ncftp в терминале затем вводят:

open -u ftpusername ftp.thedomain.com

Это попросит у Вас пароля, ввести его, и затем:

get -R /home/remotewebsite/public_html/ /home/localwebsite/public_html/

Это сделает остальных pf работа для Вас..удачи

2
ответ дан 16 December 2019 в 22:45

Я использую GVFS / FTP. Я монтирую свои удаленные FTP-серверы с жиголо. Поскольку они рассматриваются как локальные каталоги, почти все, что работает с локальными файлами, работает. rsync предназначен для удаленного вычисления хэшей файлов для сравнения файлов без их передачи, но при этом с виртуальными файлами файлы все равно передаются. unison и freefilesync обычно работают хорошо, но я столкнулся с проблемой, когда они захотели переименовать загруженный вами файл, без проблем с загрузкой. Это могло быть проблемой с gvfs 1.6.1.

4
ответ дан 16 December 2019 в 22:45

Вы можете использовать curlftpfs для монтирования ftp и использовать rsync после http://linux.die.net/man/1/curlftpfs

5
ответ дан 16 December 2019 в 22:45

Также есть wput:

wput --timestamping --reupload --dont-continue source-files ftp://target.host/dir

Имя пользователя и пароль считываются из ~ / .netrc. В противном случае, если вас не особенно беспокоит безопасность, вы можете указать их как (скрытые)

0
ответ дан 16 December 2019 в 22:45

Для этого я сделал собственный инструмент командной строки: ftpsync

Почему? Поскольку это просто и элегантно, для других инструментов требуется множество зависимостей, иногда компиляция, иногда не работает (например, lftp на MacOs High Sierra). Ftpsync написан на чистом Python, не требует сторонних библиотек и имеет небольшой размер, вы можете просто включить файл в свой проект.

Использование: cd в каталог вашего проекта и введите:

ftpsync user:pass@ftp.address.url/remote/dir --delete

- delete означает удаление удаленных файлов, которые не существуют локально.

Если вы не хотите синхронизировать, а просто запускаете необработанную команду ftp, используйте:

ftpsync -c '...'

Это полезно для некоторых простых операций, таких как отправка файла и его переименование:

ftpsync -c 'PASV; TYPE I; STOR some_file.ext; RNFR some_file.ext; RNTO some_file_renamed.ext'
0
ответ дан 16 December 2019 в 22:45

rclone - хорошая программа, которая выполняет синхронизацию каталогов по ftp и многим другим протоколам, включая провайдеров облачных хранилищ (Amazon S3, Dropbox, Google Drive). Она может синхронизироваться с/из любой комбинации локального или удаленного хранилища.

Для настройки удаленного ftp следуйте этим инструкциям .

После этого синхронизация выполняется следующим образом:

rclone sync /home/dir FTP_REMOTE:/home --progress 
0
ответ дан 16 December 2019 в 22:45

Теги

Похожие вопросы