Soru Ssh üzerinde fark nasıl?


Tek bağlantının ssh olması koşuluyla, makineler arasında dosya / klasörleri nasıl ayırt edebilirim?


166
2017-08-26 17:17


Menşei


Nispeten benzer bir soru var # 16661: İki RedHat Linux sunucusunu nasıl ayırt edebilirim?. Buradaki cevap, tıklamaları kaydetmek için rsync -ani --delete / root@remotehost:/ fakat tam cevap daha fazla detay verir. - Owen Blacker
Burada birçok cevap var, ama hangi yaklaşım daha hızlı? - pl1nk
Kimse kullanmaz görsel fark araçları? - Dan Dascalescu


Cevaplar:


Bash'in ile yapabilirsin süreç ikamesi:

 diff foo <(ssh myServer 'cat foo')

Ya da her ikisi de uzak sunuculardaysa:

diff <(ssh myServer1 'cat foo') <(ssh myServer2 'cat foo')

143
2017-08-26 17:22



evet, böyle bir şey, ama dizinler için :) - Alexey Timanovsky
Dizinleri nasıl kastediyorsunuz, kedileri her zaman ls ile değiştirebilir - Kyle Brandt♦
'Dizinler için' yinelemeli bir fark yapmaktan şüphe ediyorum. - Ian Clelland
Uzak sunucumun bir parola gerektirmesi durumunda bu tekniğin benim için çalışmadığını fark ettim. Şifre istemi yeniden yönlendirme ile iyi çalışmadı ve başarıyla tamamlanamadı. Ssh tuşlarını kullanırsanız, bu bir sorun olmamalıdır. - Adam Franco
Bu, birçok problem için büyük bir genel çözümdür. 'Cat foo' yerine 'find / foo / bar -type f | kullanabilirsiniz. dosya okunurken; echo "**** $ dosya" yapın; kedi "$ dosya"; bitti ve dosya adlarının ve dosya içeriğinin bir listesi var. - Paul Gear


Sonunda harika bir çözüm buldum: vimdiff

vimdiff /path/to/file scp://remotehost//path/to/file

sayesinde http://linux.spiney.org/remote_diff_with_vim_and_ssh Ayrıca bakınız http://www.vim.org/scripts/script.php?script_id=1075 .


99
2018-05-15 08:55



vimdiff tatlıdır, teşekkürler! - Max Felker
Dizinler ne olacak? :) - Perlnika
İşte bir örnek: vimdiff .bash_profile scp: //vaibhavc@10.217.212.97//home/vaibhavc/.bash_profile - vaichidrewar
2 eğik çizgi // sonra remotehost önemli. Tek eğik çalışmaz - Lee Chee Kiam
Uzak ana bilgisayarda geçerli ana makinenizden farklı bir kullanıcı adınız varsa, vimdiff /path/to/file scp://username@remotehost//path/to/file - JaredC


Eğer gerçek dosyaları fark etmek yerine, hangi dosyaların farklı olduğunu görmek istiyorsanız, o zaman kullanabilirsiniz. rsync --dry-run


58
2017-09-04 11:14



rsync -n kısa versiyonudur. - volni
Harika - başka bir bağlantı noktası kullanmanız gerekiyorsa, rsync -e "ssh -p 2222" <SRC> <DST> kullanın. - Samoth


İşte başka bir hızlı ve kirli komut satırı tarifi. Seçilen cevabın aksine, makefiller içinde çalışır:

ssh [login]@[host] "cat [remote file]" | diff - "[local file]"

15
2017-12-27 18:43



Düzenlemem geçmezse: bu yöntem, seçilen cevaptan üstündür çünkü makefile ile çalışır. - Chris Redford
@Steve Dickinson - "makefiles içinde çalışır" ile ne demek istiyorsun? - Martin Vegter
Bu, kendim gibi vim alerjisi çekiyorsanız da güzel bir çözümdür. :) Aynı dosyayı iki farklı ana bilgisayarda karşılaştıran, makineler arasında hizmetler taşırken ve yapılandırma dosyalarını karşılaştırırken faydalı bir bash betiği oluşturdum. Görmek gist.github.com/jhqv/dbd59f5838ae8c83f736bfe951bd80ff - Janek


Dosyaları ortak bir makineye getirmek için scp'yi kullanın ve onları orada mı farklılaştırın?

Ya da sadece dosyaların olup olmadığını bilmek istiyorsan Hangi farklı veya değil, her makinede md5sum ile karıştırın.

Şuna benzer bir şeye benzeyebilirsiniz. sshfsAma fark etmediğim bir algoritmanın ne kadar iyi olduğunu bilmiyorum.


10
2017-08-26 17:19



Dosyaların farklı olup olmadığını görmenin daha kolay bir yolu rsync --dry-run. - Gerald Combs
SSHFS'yi unutmuştum. Bu benim için harika çalıştı ... - arod


Tek yol, eğer sisteminizde mümkün ise uzak dosya sistemini basitçe sshfs.


7
2017-08-26 17:19



fark genellikle yapılandırma farkını kontrol etmek gibi tek vuruş eylemidir. Dosya sistemi her zaman mümkündür, ancak uygun değildir. Katran ve scp daha iyi olur. - Alexey Timanovsky


Kullanabilirsiniz rsync Kısaca önerildiği gibi kuru çalışma modunda başka cevap. Farklı olan tüm dosyaları listeler.

Bunun için rvnc seçenekler (r= Yinelemeli, v= Ayrıntılı, n= kuru çalıştırma, c= Sağlama toplamı). İle rsync çekme modunda (rsync [OPTION...] [USER@]HOST:SRC... [DEST]), bir örnek:

rsync -rvnc root@182.18.158.207:/var/www/html/dev/ .

HatırlamakBu, yerel veya uzak dosya daha yeni olup olmadığı hakkında bilgi sağlar. Sadece farklılarsa.


3
2018-04-29 12:21





  • Yerel makinenizde, ayırt etmek istediğiniz dizinin özyinelemesini yapın. Örneğin:

    cp -R dir replica
    
  • uzak dizini yerel kopya üzerinde çoğaltmak için rsync kullanın:

     rsync remote:/path/to/dir replica
    
  • Yerel dizinin ve uzaktakiin yerel kopyası arasındaki farkı bulmak için diff kullan:

    diff dir replica
    

2
2018-01-30 13:16





Eğer sshfs'iniz varsa ve farklı dizinlere ihtiyacınız varsa:

mkdir remote_path
sshfs user@host:/path/ remote_path
diff -r path remote_path

2
2017-11-10 05:22