Pertanyaan Cara menggunakan rsync melalui FTP


Unix apa pun:

Saya memiliki garis cmd berikut yang berfungsi dengan baik.

rsync -avr -e ssh /home/dir user@example.com:/home/

Tetapi saya perlu mengaturnya sekarang untuk rsync ke server jauh yang hanya memiliki server FTP. Bagaimana saya melakukannya?

Saya melihat bantuan rsync tetapi dengan cepat tersesat (saya tidak sering melakukan hal ini).


175
2018-06-12 09:51




Ini mirip dengan menanyakan cara menggunakan HTTP melalui IRC, atau cara menggunakan FTP melalui SMTP ... - Juliano
Mungkin Anda bisa menjelaskan beberapa alasan Anda untuk melakukan ini, maka kami dapat membantu Anda menemukan solusi yang tepat. - James
pada dasarnya saya mencoba untuk mengotomatiskan cadangan dari server hosting bersama, dan tidak mengerti bagaimana rsync bekerja. Saya telah pindah ke vps sekarang, dan tidak memiliki batasan ftp lagi - bumperbox
Duplikat adalah dewa Anda: scie.nti.st/2013/4/13/… - user956584
Jika penyebaran adalah, apa yang ada di pikiran Anda, dan Anda tidak keberatan NodeJS, periksa dploy, malas dan bekerja dengan baik dengan git - Frank Nocke


Jawaban:


Kamu tidak. rsync tidak dapat melakukannya untuk Anda, itu adalah protokolnya sendiri dan tidak berfungsi melalui FTP.

Anda mungkin, bagaimanapun, ingin mencoba csync. IIRC menyediakan perilaku rsync-like melalui HTTP. Saya tidak dapat berkomentar apakah itu bekerja melalui FTP, Anda harus mencobanya.


76
2018-06-12 10:00



Melihat ke halaman web csync, mendukung sftp tetapi tidak disebutkan dukungan untuk plain ftp. - Keith Thompson


rsync tidak akan berhasil untuk Anda karena alasan orang lain telah disebutkan. Namun, lftp dan ncftp keduanya memiliki mode "cermin" yang mungkin akan memenuhi kebutuhan Anda.

Saya menggunakan ini untuk mendorong barang-barang dari direktori lokal saya ke host web ftp atau 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"

156
2018-06-12 14:58



LFTP sangat bagus. satu lagi yang baru kutemukan adalah wput yang memiliki pembatasan bandwidth built-in. - karmakaze


Seperti yang ditulis oleh kuda-kuda, lftp adalah alat yang bagus.

Saya menyarankan Anda untuk membuat parametrize script, dan memanfaatkan

exclude-glob

opsi, yang mengecualikan nama file menggunakan fitur glob (* ,? ..) dari shell Anda:

#!/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"

Peringatan: pastikan bahwa direktori target ada, jika tidak perintah cd akan gagal, jadi operasi termasuk menghapus pohon file  akan berlangsung di direktori yang salah (root)!

Saya telah memperbarui skrip sehingga --delete opsi dinonaktifkan oleh defaut, aktifkan dengan menghapus tanda komentar DELETE= command.


118
2018-01-26 11:58



Bantu saya sekelompok besar. Tetapi saya harus menghapus "set ftp: list-options -a;" yang mana mengacaukan semuanya. - mat
Adakah sesuatu seperti ini yang melakukan hal yang sama di atas SFTP (FTPS?)? - trusktr
Saya akan melakukan ini sebelumnya cd $RCD, untuk mencegah a-script-with-a-typo karena tidak sengaja menghapus file dari direktori yang salah: set cmd:fail-exit yes. (Kelihatannya lftp tidak menyadari bahwa itu telah benar-benar keluar, sampai Anda mengeluarkan perintah berikutnya.) - Dan sebelumnya cd $LCD Saya akan melakukan ini (di shell lokal, yaitu, di bagian atas scrip): set -eu. - KajMagnus
Sebenarnya, pertama kali saya menjalankan skrip saya, saya belum membuat direktori jauh, sehingga skrip gagal ke CD ke direktori yang tidak ada. Kemudian skrip mulai mirror, dan dengan demikian --delete: d file dari dir salah. (Tapi saya menyalinnya kembali, jadi dalam hal itu tidak masalah. Mungkin itu penting untuk orang lain.) - KajMagnus
Serta mengikuti saran @KajMagnus tentang penggunaan 'set -eu' dan 'cd $ LCD', tambahkan 'mkdir -p $ LCD' sebelum 'cd $ LCD' - dengan cara itu Anda dapat yakin bahwa direktori itu ada dan Anda ' kembali di dalamnya. - Paul Gear


Tergantung dari apa yang sebenarnya Anda coba lakukan, pendekatan lain yang sama sekali berbeda bisa digunakan curlftps untuk me-mount folder ftp, dan kemudian mungkin rsync dua folder "lokal".

Instalasi berbeda tergantung pada distro Anda sehingga saya tidak bisa menyamaratakan itu, tetapi Anda perlu menginstalfuse dan curlftpfs (Debian prolly sudah memiliki fuse instal secara default), kemudian:

  1. sudo apt-get install curlftpfs

  2. Pastikan itu fuse modul dimuat (modprobe fuse)

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

Perhatikan bahwa tidak ada ruang setelah koma terakhir (ini bukan salah ketik!). Jika Anda puas dengan itu atau tidak ingin membuatnya setiap kali, Anda dapat menambahkannya ke fstab Anda (biasanya dalam /etc/fstab):

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

Dalam hal ini, Anda harus memastikan modul sekering dimuat sebelumnya.

Maklum, ada dua hal:

  • Bahwa pengembang menjatuhkan proyek satu atau dua tahun yang lalu, jadi saya tidak tahu bagaimana dapat digunakan / stabil untuk saat ini.
  • Jika kata sandi mengandung karakter aneh curlftpfs bisa gagal (mungkin Anda bisa melakukan sesuatu dengan .netrc).

23
2017-12-11 12:39



FTP Fuse dan rsync paling dekat dengan pertanyaan tetapi jelas gila pada apa pun kecuali sekumpulan kecil file kecil. - Steve-o
Kenapa itu gila? Secara default rsync stat () s, tidak membandingkan isinya. Itu bisa dilakukan oleh ls-l dengan klien ftp. - ptman
Saya benar-benar mencoba ini (melalui rsnapshot) dan itu tidak berhasil, setiap file kembali dan kesalahan, menunjukkan bahwa rsync tidak dapat membuat tautan. Jadi menggunakan lftp bersamaan dengan rsnapshot melakukan triknya - Konstantin Pereiaslov
Sempurna pada 14,04 LTS; tip tambahan: ketika Anda siap untuk meng-unmount situs FTP Anda cukup gunakan umount DIR dimana DIR dulu punyamu /path/to/ftp/folder atas. - Joe
2017, dan ini masih berfungsi! Jujur cara termudah untuk menyalin file dari enmasse situs FTP. Pasang secara lokal, lalu rsync seolah-olah lokal - td512


Ada weex...

Weex adalah utilitas yang dirancang untuk   mengotomatiskan tugas dari jarak jauh   memelihara halaman web atau FTP lainnya   arsip. Ini akan menyinkronkan satu set   file lokal ke server jauh dengan   melakukan unggahan dan menghapus jarak jauh   seperti yang dipersyaratkan.


15
2017-08-17 14:38



Bekerja seperti pesona! Anda menjalankannya seperti ini: $ weex yourFTPconfigName Ini panduannya linuxcertif.com/man/1/weex - sobi3ch


rsync tidak berfungsi di atas ftp. Di sisi remote dibutuhkan baik daemon rsync atau shell yang dapat memanggil rsync dari. Ftp umumnya memungkinkan Anda untuk memanggil beberapa perintah dan rsync bukan salah satunya. Ada alat lain yang dimaksudkan untuk mengotomatisasi tugas ftp seperti "lftp".


9
2018-06-12 10:03





Ini sepertinya cocok baik dan gratis: https://savannah.gnu.org/projects/ftpsync/


8
2018-06-12 15:02



Mengingat tumpukan uap jangan sentuh-dengan-a-sepuluh-kaki-tiang SourceForge telah menjadi akhir-akhir ini, mungkin Anda harus memperbarui tautan ke halaman web proyek. - HopelessN00b


Untuk apa yang tampaknya Anda coba lakukan, Anda juga bisa menggunakan wget.

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


6
2018-02-25 18:12



Itu hanya akan membuat cermin situs. Anda tidak dapat menggunakan ini untuk mengunggah modifikasi Anda. - David V.


Anda dapat menggunakan curlftpfs untuk me-mount ftp dan menggunakan rsync setelahnya http://linux.die.net/man/1/curlftpfs


5
2017-12-09 21:47



Selamat datang di ServerFault! Ini mungkin awal yang baik, tetapi beberapa detail teknis lebih lanjut mengapa ini adalah pendekatan yang lebih baik, dan mungkin sebuah tiruan tentang cara melakukannya, mungkin masuk akal. - Scott Pack