Soru FTP üzerinden rsync nasıl kullanılır


Herhangi bir unix:

İyi çalışan aşağıdaki cmd çizgisine sahibim.

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

Ama şimdi sadece bir FTP sunucusuna sahip olan uzak bir sunucuya rsync kurmak gerekiyor. Bunu nasıl yaparım?

Rsync yardımına baktım ama hızlıca kayboldum (bunu çok sık yapmıyorum).


176
2018-06-12 09:51


Menşei


Bu, IRC üzerinden HTTP'yi nasıl kullanacağınızı veya SMTP üzerinden FTP'yi nasıl kullanacağınızı sormaya benzer. - Juliano
Belki de bunu yapmak istediğin için bazı sebeplerini açıklayabilirsin, o zaman uygun bir çözüm bulmana yardım edebiliriz. - James
Esasen, paylaşılan bir barındırma sunucusundan bir yedeği otomatikleştirmeye çalışıyordum ve rsync'in nasıl çalıştığını anlamadı. Şimdi bir vps'ye taşındım ve artık ftp sınırlaması yok - bumperbox
Duplicity senin tanrın: scie.nti.st/2013/4/13/... - user956584
Eğer yayılma Aklında ne var, ve sende NodeJS'e aldırmıyorsun, kontrol et dploytembel ve git ile iyi çalışır - Frank Nocke


Cevaplar:


Yapmıyorsun. rsync bunu sizin için yapamaz, kendi başına bir protokoldür ve FTP üzerinden çalışmaz.

Ancak, denemek isteyebilirsiniz CSYNC. IIRC, HTTP üzerinden rsync benzeri davranış sağlar. FTP üzerinden çalışıp çalışmadığına dair yorum yapamam, denemek zorundasın.


76
2018-06-12 10:00



Bakıyor csync web sayfasısftp'yi destekliyor, ancak ftp için destekten söz edilmiyor. - Keith Thompson


rsync Başkalarının bahsettiği sebeplerden dolayı senin için çalışmayacağım. Ancak, lftp ve ncftp Her ikisinde de ihtiyaçlarınızı karşılayacak "ayna" modları var.

Yerel dizinimden bir ftp veya sftp web barındırıcısına bu şeyi itmek için kullanıyorum:

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 çok güzel. yeni öğrendiğim başka bir şey wput dahili bant genişliği sınırlaması vardır. - karmakaze


Tarafından yazıldığı gibi şövale, lftp iyi bir araçtır.

Senaryoyu parametrelendirmeni ve

exclude-glob

Kabuğunuzun glob özelliğini (* ,? ..) kullanarak dosya adlarını içermeyen seçenekler:

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

Uyarı: Hedef dizinin var olduğundan emin olun, aksi halde cd komutu başarısız olur, bu yüzden operasyon dosya ağaçlarının silinmesi dahil  yanlış dizininde (kök) gerçekleşecek!

Senaryoyu güncelledim böylece --delete seçeneği varsayılan olarak devre dışı bırakılır, DELETE= command.


119
2018-01-26 11:58



Bana büyük bir demet oldu. Ancak "set ftp: list-options -a;" öğesini kaldırmam gerekiyordu. Hangi şeyleri karıştırıyorsun. - mat
SFTP (FTPS?) Üzerinden aynı şeyi yapan böyle bir şey var mı? - trusktr
Bunu daha önce yapardım cd $RCD, bir yazım hatasıyla yazım yanlış dosyaları yanlış dizinden silmeyi engellemek için: set cmd:fail-exit yes. (Görünüyor lftp Bir sonraki komutu verene kadar aslında çıkmış olduğunu fark etmez.) - Ve daha önce cd $LCD Bunu yapardım (yerel kabukta, yani, en tepede): set -eu. - KajMagnus
Aslında, senaryoyu ilk kez çalıştırdığımda, henüz uzak dizini yaratmamıştım, bu yüzden komut dosyası CD'yi mevcut olmayan direklere dönüştüremedi. Sonra senaryo başladı mirror, ve böylece --delete: d dosyaları yanlış dir. (Ama onları tekrar kopyaladım, bu yüzden bu önemli değildi. Belki de başkası için önemli.) - KajMagnus
'Set -eu' ve 'cd $ LCD' kullanımı ile ilgili @KajMagnus 'tavsiyesinin yanı sıra' cd $ LCD 'yerine' mkdir -p $ LCD 'ekleyin - bu şekilde dizinin var olduğundan emin olabilirsiniz.' içinde yeniden. - Paul Gear


Yapmaya çalıştığınız şeye bağlı olarak, tamamen farklı bir yaklaşım kullanılabilir. curlftps ftp klasörünü monte etmek ve sonra belki rsync iki "yerel" klasör.

Yükleme dağıtımınıza bağlı olarak farklıdır, bu yüzden genelleştiremiyorum, ancak yüklemeniz gerekiyorfuse ve curlftpfs (prolly Debian zaten var fuse varsayılan olarak yükleyin), sonra:

  1. sudo apt-get install curlftpfs

  2. Emin ol fuse modül yüklenir (modprobe fuse)

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

Son virgülden sonra boşluk olmadığına dikkat edin (yazım hatası değil!). Bundan memnunsanız veya bunu her zaman yapmak istemiyorsanız, bunu fstab'ınıza ekleyebilirsiniz (genellikle /etc/fstab):

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

Bu durumda, sigorta modülünün daha önce yüklü olduğundan emin olmalısınız.

Ancak, iki şeyden haberdar olun:

  • Geliştiricinin projeyi bir ya da iki yıl önce düşürdüğü için, şu an için ne kadar kullanılabilir / kararlı olduğunu bilmiyorum.
  • Şifre garip bir karakter içeriyorsa curlftpfs başarısız olabilir (belki de .netrc).

23
2017-12-11 12:39



FTP Sigortası ve rsync soruna en yakın fakat bir şeyden çok küçük bir dosya kümesine açık bir şekilde deliriyor. - Steve-o
Neden bu delilik olur? Varsayılan olarak rsync stat () s, içeriği karşılaştırmaz. Bu bir ftp istemcisi ile ls -l tarafından yapılabilir. - ptman
Aslında bunu (rsnapshot aracılığıyla) denedim ve işe yaramadı, her dosya döndü ve hata oluştu, rsync'in bir bağlantı oluşturamadığını gösterdim. Bu yüzden, rsnapshot ile birlikte lftp kullanmak hile yaptı - Konstantin Pereiaslov
14.04 LTS'de kusursuz; ek bir ipucu: FTP sitenizi kaldırmak için hazır olduğunuzda umount DIR nerede DIR senin miydi /path/to/ftp/folder Yukarıdaki. - Joe
2017 ve bu hala çalışıyor! Dürüstçe bir FTP sitesinden dosyaları kopyalamanın en kolay yolu. Yerel olarak monte edin, sonra yerelymiş gibi rsync - td512


Var weex...

Weex için tasarlanmış bir yardımcı programdır   uzaktan görevini otomatikleştir   bir web sayfasını veya başka bir FTP'yi korumak   Arşiv. Bir dizi senkronize edilecek   yerel dosyaları uzak bir sunucuya göre   yükleme ve uzaktan silme gerçekleştirme   gereğince, gerektiği gibi.


16
2017-08-17 14:38



Çekicilik gibi çalışır! Bunu böyle koşuyorsun: $ weex yourFTPconfigName İşte el kitabı linuxcertif.com/man/1/weex - sobi3ch


rsync, ftp üzerinden çalışmıyor. Uzak tarafta ya rsync daemon ya da rsync diyebileceği bir kabuk var. Ftp genellikle birkaç komut çağırmanıza izin verir ve rsync bunlardan biri değildir. "Lftp" gibi ftp görevlerini otomatikleştirmek için kullanılan başka araçlar da var.


9
2018-06-12 10:03





Bu iyi ve özgür bir uyum gibi görünüyor: https://savannah.gnu.org/projects/ftpsync/


8
2018-06-12 15:02



Buhar kazanı göz önüne alındığında düğünle-dokunmatik-with-a-on-ayak-kutbu SourceForge son zamanlarda oldu, belki de bağlantıyı projenin web sayfası. - HopelessN00b


Görünüşe göre ne yapmaya çalışıyorsun, sen de wget kullanabilirsin.

wget -m ftp: // kullanıcı adı: password@domain.com


7
2018-02-25 18:12



Bu sadece sitenin bir aynasını yapacaktır. Değişikliklerinizi yüklemek için bunu kullanamazsınız. - David V.