İki Redhat Linux sunucusunu nasıl dağıtabilirim?


15

Bilinen farklılıklar dışında aynı kuruluma sahip olması gereken iki sunucum var.

Koşarak:

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt

Bir sunucudaki tüm dosyaların bir listesini bulabilir ve diğer sunucudaki dosyalar listesiyle karşılaştırabilirim. Bu bana sunucularda bulunan dosyaların adlarındaki farklılıkları gösterecektir.

Gerçekten ne yapmak istiyorum her iki sunucudaki tüm dosyaları bir sağlama toplamı çalıştırmak ve aynı zamanda içeriği farklı nerede bulmak için karşılaştırın. Örneğin

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum

Bunu yapmanın mantıklı bir yolu var mı? Rysnc'in zaten bu işlevselliğin çoğuna sahip olduğunu düşünüyordum, ancak farklılıklar listesini sağlamak için kullanılabilir mi?


2
Bir dahaki sefere -print0yerine -printve xargs -0yerine kullanmanız gerekir xargs. "Tek" dosya adlarından kaynaklanan sorunlardan kaçınacaksınız.
Cristian Ciupitu

Yanıtlar:


22

Haklısın, rsync bunun için mükemmel. --itemize-changes(Aka -i) kullanın . Bunu her iki tarafta da (veya makineye tam erişime sahip başka bir kullanıcı olarak) çalıştırabildiğinizden emin olun:

rsync -ani --delete / root@remotehost:/
  • -a arşiv içindir ve temel olarak rsync'i tam bir kopya haline getirir (bağlantıları içeren bazı durumlar dışında)
  • -n kuru çalışma içindir ve hiçbir şeyin gerçekten değiştirilmeyeceği anlamına gelir (Bu bir ÖNEMLİ! :))
  • -i öğe değişikliklerine yöneliktir ve güncellenmesi gereken her dosyayı gösteren bir kez anlaşılması kolay bir biçim verir (sözdizimi, söz konusu tetikleyicinin ayrıntılı yardımının altındaki kılavuz sayfasında tam olarak açıklanır).
  • --delete rsync'in hedefte var olan ancak kaynakta olmayan dosyaları silmesini sağlar.

Belirli yolları hariç tutmak istiyorsanız, gibi komutları kullanın --exclude /var. Hariç tutma kalıpları kaynak dizine görelidir (bu durumda /, yani etkin bir şekilde mutlaktır).


Eğer / var çıkardığınız takdirde crontabs saklandığı yerde, ayrıca muhtemelen, hangi hariç tutar DO kontrol edilmesi ihtiyacını. Ancak, / var / log ve / var / cache
Sean Reifschneider 26:11

7

Rsync'in -c bayrağını araştırmak isteyebilirsiniz. Gönderen man rsync:

    -c, --checksum              skip based on checksum, not mod-time & size

Alex Jurkiewicz'in cevabına bir yorum bırakardım, ancak yeterli temsilcim yok: '(henüz ...


1
Bu bayrağın yararlı olduğu bazı senaryolar vardır. Gördüğüm en yaygın şey, sabit bir boyut olan bir çeşit 'garip' (genellikle ikili) formatta depolanan verileriniz olduğunda. Dosya, senkronizasyonun her iki tarafındaki otomatik bir işlemle tam olarak aynı anda güncellenirse (günlük dönüşünü veya benzerini söyleyin) rsync, yalnızca boyut / m-zamanında senkronize ederken dosyayı kaçırabilir. Kesinlikle mümkün, ancak oldukça nadir.
Alex J

Sadece dosyaların içeriğini kontrol etmesini beklerdim, böylece mod-time vb. veri ve sadece içeriğe dikkat, git nasıl yapar?
iconoclast

4

Dikkate almanız gereken yararlı bir araç "rpm -Va" dır. Bu, paketlendiklerinden farklı olan tüm paketlenmiş dosyaların bir listesini yazdırır . Bu, paketlenmemiş dosyaları yok sayar, ancak kurulumdan bu yana değiştirilen, temel sistemin bir parçası olan dosyalar hakkında fikir sahibi olmanın çok iyi bir yoludur. Ayrıca, yapılandırma dosyaları olarak kabul edilip edilmeyeceklerini bildiren bir işaret içerirler.

Örneğin:

S.5....T  c /root/.bashrc
S.5....T  c /etc/yum/yum-updatesd.conf
.M......    /usr/bin/rdate
..5....T  c /etc/dbbackup.conf
S.5....T  c /etc/webalizer.conf
SM5....T  c /etc/sysconfig/iptables-config

Yani ".bashrc" ve "yum-updatesd.conf", boyut, zaman ve MD5 sağlama toplamında değişen "yapılandırma" dosyalarıdır. "rdate" mod değişikliği yaptı ...

RPM veritabanı çok faydalı bir şeydir.

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.