Dowolny unix:
Mam następującą linię cmd, która działa dobrze.
rsync -avr -e ssh /home/dir [email protected]:/home/
Ale muszę go teraz skonfigurować, aby rsync był na zdalnym serwerze, który ma tylko serwer FTP. Jak mam to zrobić?
Spojrzałem na pomoc rsync, ale szybko się zgubiłem (nie robię tego zbyt często).
Odpowiedzi:
Ty nie. rsync nie może tego zrobić dla ciebie, jest to własny protokół i nie działa przez FTP.
Możesz jednak spróbować csync . IIRC zapewnia zachowanie podobne do rsync przez HTTP. Nie mogę komentować, czy działa przez FTP, musisz spróbować.
źródło
rsync nie będzie dla ciebie działał z powodów, o których wspominali inni. Jednak zarówno lftp, jak i ncftp mają tryby „lustrzane”, które prawdopodobnie spełnią twoje potrzeby.
Używam tego do wypychania rzeczy z mojego lokalnego katalogu do hosta ftp lub sftp:
źródło
wput
którym właśnie się dowiedziałem, jest wbudowane ograniczenie przepustowości.Jak napisał sztaluga ,
lftp
jest dobrym narzędziem.Sugeruję sparametryzowanie skryptu i skorzystanie z niego
opcje, które wykluczają nazwy plików za pomocą funkcji glob (* ,? ..) powłoki:
Ostrzeżenie: upewnij się, że katalog docelowy istnieje, w przeciwnym razie polecenie cd nie powiedzie się, więc operacja obejmująca usunięcie drzew plików nastąpi w niewłaściwym katalogu (root)!
Zaktualizowałem skrypt, aby
--delete
opcja została wyłączona przez defaut, włącz ją, usuwając komentarzDELETE= command
.źródło
cd $RCD
, aby zapobiec przypadkowemu usunięciu plików z niewłaściwego katalogu przez skrypt z literówkąset cmd:fail-exit yes
. (Wydaje sięlftp
nie zauważyć, że to faktycznie wyszedł, do czasu wydania następnego polecenia.) - I zanimcd $LCD
bym to zrobić (w lokalnej powłoce, czyli w górnej części scrip)set -eu
.mirror
, a tym samym--delete
: d pliki z niewłaściwego katalogu. (Ale skopiowałem je ponownie, więc w tym przypadku nie miało to znaczenia. Być może ma to znaczenie dla kogoś innego.)W zależności od tego, co faktycznie próbujesz zrobić,
curlftps
do zamontowania folderu ftp można użyć innego całkowicie odmiennego podejścia , a następnie być możersync
dwóch „lokalnych” folderów.Instalacja różni się w zależności od twojej dystrybucji, więc nie mogę tego generalizować, ale musisz zainstalować
fuse
icurlftpfs
(Deblyfuse
instaluje już domyślnie), a następnie:sudo apt-get install curlftpfs
Upewnij się, że
fuse
moduł jest załadowany (modprobe fuse
)sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other
Zauważ, że po ostatnim przecinku nie ma spacji (nie jest to literówka!). Jeśli jesteś z tego zadowolony lub nie chcesz tego robić za każdym razem, możesz dodać go do swojego fstab (zwykle w
/etc/fstab
):W takim przypadku należy wcześniej upewnić się, że moduł bezpieczników jest załadowany.
Pamiętaj jednak o dwóch rzeczach:
curlftpfs
może się nie powieść (być może możesz coś z tym zrobić.netrc
).źródło
umount DIR
gdzieDIR
był twój/path/to/ftp/folder
powyżej.Jest weex ...
źródło
$ weex yourFTPconfigName
Oto instrukcja linuxcertif.com/man/1/weexrsync nie działa z ftp. Po drugiej stronie potrzebuje demona rsync lub powłoki, z której może wywoływać rsync. Ftp ogólnie pozwala na wywołanie kilku poleceń, a rsync nie jest jednym z nich. Istnieją inne narzędzia do automatyzacji zadań ftp, takie jak „lftp”.
źródło
Wygląda to na dobre i bezpłatne dopasowanie: https://savannah.gnu.org/projects/ftpsync/
źródło
Do tego, co wygląda na to, że próbujesz zrobić, możesz również użyć wget.
wget -m ftp: // nazwa użytkownika: hasł[email protected]
źródło
Możesz użyć curlftpfs do zamontowania ftp i użyć rsync po http://linux.die.net/man/1/curlftpfs
źródło
Używam GVFS / FTP. Montuję zdalne serwery FTP za pomocą gigolo. Ponieważ są one postrzegane jako katalogi lokalne, działa prawie wszystko, co działa na plikach lokalnych. rsync jest przeznaczony do zdalnego obliczania skrótów plików w celu porównywania plików bez ich przesyłania, ale robienie tego przy plikach wirtualnych powoduje ich przesyłanie. unison i freefilesync normalnie działają dobrze, ale napotkałem problem, gdy chcą zmienić nazwę pliku, który przesłałeś, bez problemu pobieranie. Może to być problem z gvfs 1.6.1.
źródło
Rozwiązanie Jonas S może być przydatne w zależności od okoliczności, na przykład jeśli masz dużą prędkość pobierania i powolne przesyłanie, sprawdzanie plików na serwerze może być stosunkowo szybsze niż niepotrzebne przesyłanie plików.
Prawdopodobnie chcesz jednak użyć CurlFTPFS: http://packages.ubuntu.com/search?suite=default§ion=all&arch=any&searchon=names&ke words=curlftpfs
Chociaż ogólnie lepiej jest używać zwykłego klienta FTP zamiast rsync.
źródło
Nie wierzę, że będziesz w stanie to zrobić, serwer, na którym próbujesz Rsync, będzie miał uruchomiony tylko serwer FTP, nie zrozumie poleceń, które wysyła go Rsync.
Jeśli chcesz to zrobić, ponieważ masz dostęp tylko do portu 21, ale masz kontrolę nad serwerem, możesz zmienić port, na którym nasłuchuje Rsync, na serwerze, ale jest to oczywiście przydatne tylko wtedy, gdy nie masz chcesz użyć FTP na tym porcie.
źródło
Jeśli chcesz zautomatyzować zadanie, skorzystaj z lftp, ponieważ możesz utworzyć skrypt, jak niektórzy napisali powyżej, możesz napisać to wszystko bardzo łatwo według własnych upodobań, jeśli szukasz rozwiązania jednorazowego (tj. Musisz pobrać całą stronę internetową) przez ftp / przenieś go na inny serwer) użyj ncftp, to proste, zainstaluj, jeśli nie jest jeszcze zainstalowane:
lub
(przepraszam, że dystrybucje nie oparte na Debianie / Red Hat ..)
po zainstalowaniu otwórz ncftp w terminalu, a następnie wpisz:
Poprosi Cię o hasło, wprowadź je, a następnie:
Wykona resztę pracy za Ciebie ... powodzenia
źródło
Korzystanie z „sitecopy” lub „mirror” może zaoszczędzić dużo przepustowości.
Obie obsługują wydajną aktualizację przyrostową.
źródło
Jest też wput:
Nazwa użytkownika i hasło są odczytywane z ~ / .netrc. W przeciwnym razie, jeśli nie jesteś szczególnie zainteresowany bezpieczeństwem, możesz podać je jako ftp: // nazwa użytkownika: hasł[email protected] .
źródło
Stworzyłem do tego własne narzędzie wiersza polecenia: ftpsync
Dlaczego? Ponieważ jest prosty i elegancki, inne narzędzia wymagają wielu zależności, czasem kompilacji, czasem nie działają (np. Lftp na MacOs High Sierra). Fpspsc jest napisany w czystym Pythonie, nie wymaga bibliotek stron trzecich i jest mały, możesz po prostu dołączyć plik do swojego projektu.
Użycie: cd do katalogu projektu i wpisz:
--delete
oznacza usuwanie zdalnych plików, które nie istnieją lokalnie.Jeśli nie chcesz synchronizować, ale po prostu uruchom surowe polecenie ftp, użyj:
Jest to przydatne w przypadku niektórych prostych operacji, takich jak wysyłanie pliku i zmiana jego nazwy:
źródło
rclone to ładne oprogramowanie, które wykonuje synchronizację katalogów przez ftp i wiele innych protokołów, w tym dostawców pamięci masowej w chmurze (Amazon S3, Dropbox, Dysk Google). Może synchronizować do / z dowolnej kombinacji pamięci lokalnej lub zdalnej.
Aby skonfigurować
ftp
pilota, postępuj zgodnie z tymi instrukcjami .Po zakończeniu operacji synchronizacji jest:
źródło
Zainstaluj sftp, a następnie możesz użyć rsync.
Używam następującego.
źródło