Yerel ve uzak dosyalar arasında bir fark çalıştırın


39

Ben üzerinden bir ana bilgisayarda bağlı olduğum ssh(en ile diyelim ve karşılaştırmak istiyorum diff, bir başka ana bilgisayarda) aracılığıyla da erişilebilir onun karşısında belli bir yapılandırma dosyası sshelle diff çalıştırmadan önce ilk uzaktan dosyayı indirmek zorunda kalmadan,.


Uzak dizini kullanarak bağlayabilir SSHFSve daha sonra yerelmiş gibi erişebilirsiniz.
Barmar,

Yanıtlar:


57
ssh user@remote_host "cat remote_file.txt" | diff - local_file.txt

Kaynak


1
Boru sadece catasıl dosya olan sonuçları indirmez mi?
Stijn de Witt,

1
boru, yerel sshkomut diffile karşılaştırmayı bekleyen uzak komutun sonucunu zorlayacaktır stdin.
fduff

1
Belki de 'uzak dosyayı indirmeye gerek kalmadan' şartını yanlış yorumluyorum. OP 'uzak dosyayı el ile indirmek zorunda kalmadan' anlamına geliyor. :) EDIT: Ah, sen OP'sin. :)
Stijn de Witt,

@StijndeWitt, evet önce uzak dosyayı scp etmek ve sonra fark yapmak zorunda kalmaktan kaçınmak istedim ..
fduff 14:14

18

Deneyin:

diff local_file <(ssh user@server 'cat remote_file')

veya kullanarak vimdiff:

vimdiff local_file scp://server//path/to/remote_file

diff local_file <(ssh user@server 'cat remote_file')Sadece şifresiz SSH için çalışır mı ? Onunla bir şifre istemi almak mümkün görünmüyor ...
sdbbs

1
@sdbbs: İşlem değişikliği arka planda çalıştı ve standart çıktıya adlandırılmış yöneltme (veya adsız yöneltme adı verilen boruya yazıldı), bu nedenle parola istemini almadınız. Deneyin cat <(ssh user@server 'cat remote_file')ve cat < <(ssh user@server 'cat remote_file')farklılıkları görmek için.
cuonglm

9

Belki de bu, tam olarak sizin durumunuz için faydalı değildir, fakat ben çoğunlukla kullanıyorum

sum -r

Her makinede, ve sağlama toplamları el ile karşılaştırın. Bu, bir ssh bağlantısı üzerinden ulaşılamadığında bile dosyaların karşılaştırılmasını sağlar. Elbette, bütün cevapları "aynı mı" dır, ancak çoğu zaman ihtiyaçlarım için yeterlidir. Ayrıca, tek bir dosyanın 3 veya 4 veya daha fazla makinede aynı olduğunu doğrulamayı kolaylaştırır.


2
Büyük dosyalar veya yavaş bağlantılar için bunun çok faydalı olabileceğini hayal edebiliyorum. Dosyalar gerçekten farklı olduğunda, dosyanın tamamını indirir. Kendimden daha iyi bir Bash komut dosyası , muhtemelen bu cevabı , dosyaların gerçekten farklı olduğu tespit edildiğinde catsadece catkomutu çalıştırmak için bir uzaktan kumandayı içeren yukarıdaki cevaplarla birleştirebilir .
Stijn de Witt,

1
Commanding info coreutils 'sum invocation', diğerlerinin yanı sıra: "uyumluluk için 'toplam' sağlandı; yeni uygulamalarda 'cksum' programı (bir sonraki bölüme bakın) tercih edilir."
Teemu Leisti

1

Terminal oturumunuzda daha görsel bir yaklaşım tercih ederseniz. Gece yarısı komutanında uzak bir dosya sistemi seçeneği (menüde SFTP bağlantısı ... seçeneği) ve görsel dosya karşılaştırma seçeneği vardır. Çoğu Linux sistemine varsayılan olarak yüklenmez, ancak çoğu temel depoda bulunur. Adımlar:

  1. Gece yarısı komutanını (command:) mckarşılaştırılacak dosyayı içeren klasörde başlatın
  2. Diğer tarafta (örneğin Sağ menü), aynı klasördeki ( sftp://<user>@<servername>/<path>) diğer sunucuya bir sftp bağlantısı oluşturun .
  3. Tuşunu kullanarak inskarşılaştırılacak dosyaları seçin / vurgulayın. ( tabsol ve sağ panel arasında değişir).
  4. In Command menüsünden seçin karşılaştır dosyaları

Not: Gece yarısı komutanı menüsüne genellikle terminal oturumunuzdaki fareyi kullanarak erişebilirsiniz. Bu işe yaramazsa F9menüde de sizi alır.

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.