Yerel bir dizini Linux'ta uzak bir dizinle eşitleme


14

İçinde birkaç dosya ve bir web sunucusunda biraz boşluk bulunan bir klasör var. Sadece değişiklik zamanında, yerel klasör ve uzak Linux arasında iki yönlü bir senkronizasyon yapmak istiyorum. Bunu nasıl yaparım? btw Sunucuya hiçbir şey yükleyemiyorum, tüm niyetler ve amaçlar için sadece alan.

Not: Zaten sessizce olabilmesi için rsa anahtar çiftleri ayarladım.

Yanıtlar:


12

Tek yönlü senkronizasyon için tercih edilen araç rsync ve çift yönlü senkronizasyon için tercih edilen araç Unison'dur . Her ikisi de yürütülebilir dosyanın her iki tarafta da kullanılabilir olmasını gerektirir. Bir dosyayı sunucu tarafında yürütülebilir hale getirebiliyorsanız, unison ikili dosyasını bırakın ve yürütülebilir yapın.

Yerel olarak Linux, * BSD, Solaris veya Mac OS X kullanıyorsanız , web sunucusu alanının yerel bir dosya sistemi olarak görünmesini sağlamak için muhtemelen bir FUSE dosya sistemi kullanabilirsiniz - sshfs ssh erişimine sahip olduğunuzdan beri çalışmalıdır. Ardından "yerel" bir birlik kullanın.

Ayrıca, çoğu sürüm kontrol yazılımının (CVS / Subversion ve dağıtılmış VCS) geçiş özelliği olarak senkronizasyona sahip olduğunu unutmayın (bir makinede giriş ve diğerinde çıkış).


4

Sunucuya yüklüyse, rsynctam olarak bu iş için derlemesini kullanın .

İki yönlü almak için bunu yapın ( http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777 alıntı ):

Çift yönlü bir dizin senkronize /src/fooüzerinde hostAetmek /dest/fooüzerine hostBbunları sen komutları aday olacağını, tüm alt dizinleri dahil olmak üzere hostA:

rsync -auz /src/foo hostB:/dest 
rsync -auz hostB:/dest/foo /src

İlk komut üzerine yeni olan tüm dosyaları iter hostAiçin hostB.

İkinci komut üzerine yeni olan tüm dosyaları çeker hostBetmek hostA. Kritik seçenekler şunlardır:

kopyalarken dosya değiştirme sürelerini korumalısınız. -abunu ve diğer şeyleri yapar;

Yalnızca değiştirme sürelerini korumak istiyorsanız -tbunun yerine kullanın.

Hedefteki daha yeni dosyaları atlamak için: -ubunu yapar.


okuduğum kadarıyla rsync bi yönlü yapmaz ve bunu denediğimde bana hata veriyor "protokol sürümü uyumsuzluk - kabuk temiz mi?"
Andrew Redd

hostanswers.net/linux-hosting/rsync-protocol-version-mismatch , sürüm uyumsuzluğunu düzeltmenize yardımcı olabilir. İki yönlü şey için cevabımı güncelledim.
tante

1
Rsync hiçbir şekilde çift yönlü senkronizasyona uyarlanmamıştır. Bir kere bir çatışma olursa sizi uyarmaz. Bunun yerine Unison kullanın, iş için doğru araçtır.
Gilles 'SO- kötü olmayı bırak'

1
A sunucusu gelecekte B sunucusundan geliyorsa, bu korkunç bir şekilde bozulur. Benim durumumda, uzak sunucudan 13 saat ilerideyim.
Tim Post

1

İki klasör arasında bir senkronizasyona ihtiyacınız rsyncolduğunda mükemmel bir esnek seçimdir. Sorun şu ki, rsync ftp protokolünü desteklemiyor. Bunun için güzel bir çözüm curlFtpFS'dir :

CurlFtpFS, FUSE ve libcurl tabanlı FTP ana bilgisayarlarına erişmek için bir dosya sistemidir.

CurlFtpFs ile dosya sisteminize uzak bir ftp klasörü eklemek oldukça kolaydır.

Bu, her iki aracın da kullanımını gösteren kısa bir örnektir:

curlftpfs -r -s ftp.foobar.com /foo
rsync -a /foo/ /bar
umount /foo

Daha fazla bilgi için el kitabını okuyun.

CurlFtpFS'yi yüklemek için böyle bir çaba istemiyorsanız ve sadece bazı dosyaları senkronize tutmak istiyorsanız, bu senkronizasyon özelliklerini sunan birçok ftp aracı vardır:

  • FTPSync.pl - yerel ve uzak bir dizini senkronize tutmak için basit PERL betiği
  • weex - web sayfalarını güncellemek için etkileşimli olmayan bir FTP istemcisi
  • filezilla - Birçok özelliğe sahip GUI FTP istemcisi
  • ...

1. Rsync çift ​​yönlü senkronizasyon için iyi değildir , bunun yerine Unison kullanın. 2. FTP nereden geldi? sorudaki RSA anahtarlarından bahsedilmesi daha çok ssh (ve dolayısıyla sshfs) önerir.
Gilles 'SO- kötü olmayı bırak'

Haklısın, FTP soruda belirtilmedi. Dürüst olmak gerekirse, bu "web alanı" ve "sadece alan" ın bir kombinasyonu olduğunu düşünüyorum. ve dün yorgunluğumdan biraz.
echox
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.