सवाल एसएसएच पर कैसे भिन्न होता है?


मैं मशीनों में फ़ाइलों / फ़ोल्डरों को कैसे अलग कर सकता हूं बशर्ते कि केवल कनेक्टिविटी उपलब्ध है?


166
2017-08-26 17:17


मूल


एक अपेक्षाकृत समान सवाल है # 16661: मैं दो रेडहैट लिनक्स सर्वर कैसे भिन्न कर सकता हूं?। क्लिक को बचाने के लिए वहां जवाब है rsync -ani --delete / root@remotehost:/ परंतु पूरा जवाब अधिक जानकारी देता है। - Owen Blacker
यहां बहुत से जवाब हैं, लेकिन कौन सा दृष्टिकोण तेज़ है? - pl1nk
कोई भी उपयोग नहीं करता है दृश्य diff उपकरण? - Dan Dascalescu


जवाब:


आप इसे बैश के साथ कर सकते हैं प्रक्रिया प्रतिस्थापन:

 diff foo <(ssh myServer 'cat foo')

या, यदि दोनों रिमोट सर्वर पर हैं:

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

142
2017-08-26 17:22



हाँ, इस तरह कुछ, लेकिन निर्देशिका के लिए :) - Alexey Timanovsky
निर्देशिकाओं के लिए आपका मतलब कैसा है, हमेशा एलएस के साथ बिल्ली को प्रतिस्थापित कर सकता है - Kyle Brandt♦
मुझे संदेह है कि 'निर्देशिकाओं के लिए' का मतलब एक रिकर्सिव डिफ है - Ian Clelland
मैंने पाया कि अगर मेरे रिमोट होस्ट को पासवर्ड चाहिए तो यह तकनीक मेरे लिए काम नहीं करेगी। पासवर्ड प्रॉम्प्ट रीडायरेक्शन के साथ अच्छी तरह से काम नहीं कर रहा था और सफलतापूर्वक पूरा नहीं किया जा सका। यदि आप एसएसएच कुंजी का उपयोग करते हैं तो यह कोई समस्या नहीं होनी चाहिए। - Adam Franco
यह कई समस्याओं के लिए एक महान सामान्य समाधान है। 'बिल्ली फू' के बजाय आप 'find / foo / bar -type f | का उपयोग कर सकते हैं फाइल पढ़ने के दौरान; echo "**** $ फ़ाइल" करें; बिल्ली "$ फाइल"; किया 'और आपके पास फ़ाइल नामों और फ़ाइल सामग्री की सूची अलग-अलग होगी। - Paul Gear


अंत में मुझे बहुत अच्छा समाधान मिला है: vimdiff

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

का शुक्र है http://linux.spiney.org/remote_diff_with_vim_and_ssh यह भी देखें http://www.vim.org/scripts/script.php?script_id=1075 ।


98
2018-05-15 08:55



vimdiff मीठा है, धन्यवाद! - Max Felker
निर्देशिकाओं के बारे में क्या? :) - Perlnika
यहां एक उदाहरण दिया गया है: vimdiff .bash_profile scp: //vaibhavc@10.217.212.97//home/vaibhavc/.bash_profile - vaichidrewar
2 slashes // के बाद remotehost महत्वपूर्ण है। सिंगल स्लैश काम नहीं करेगा - Lee Chee Kiam
यदि आपके वर्तमान होस्ट की तुलना में रिमोट होस्ट पर एक अलग उपयोगकर्ता नाम है, तो आप इसका उपयोग करेंगे vimdiff /path/to/file scp://username@remotehost//path/to/file - JaredC


यदि आप वास्तविक फाइलों के अंतर की बजाय, फाइलें अलग-अलग हैं, तो आप इसका उपयोग कर सकते हैं rsync --dry-run


58
2017-09-04 11:14



rsync -n लघु संस्करण है। - volni
बढ़िया - अगर आपको किसी अन्य पोर्ट का उपयोग करने की आवश्यकता है, तो rsync -e "ssh -p 2222" <SRC> <DST> का उपयोग करें - Samoth


यहां एक और त्वरित और गंदे कमांड लाइन रेसिपी है। चुने गए उत्तर के विपरीत, यह मेकफ़ाइल के अंदर काम करता है:

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

15
2017-12-27 18:43



अगर मेरा संपादन नहीं जाता है: यह विधि चुने गए उत्तर से बेहतर है क्योंकि यह मेकफ़ाइल के साथ काम करती है। - Chris Redford
@ स्टेव डिकिंसन - "मेकफ़ाइल के अंदर काम करता है" से आपका क्या मतलब है? - Martin Vegter
यदि आप खुद जैसे विम एलर्जी से पीड़ित हैं तो यह भी एक अच्छा समाधान है। :) मैंने एक बैश स्क्रिप्ट बनाई है जो दो अलग-अलग मेजबानों पर समान फ़ाइल की तुलना करता है, मशीनों के बीच सेवाओं को माइग्रेट करते समय और कॉन्फ़िगरेशन फ़ाइलों की तुलना करते समय उपयोगी होता है। देख gist.github.com/jhqv/dbd59f5838ae8c83f736bfe951bd80ff - Janek


फ़ाइलों को एक आम मशीन में लाने के लिए एसपीपी का उपयोग करें और उन्हें वहां अलग करें?

या, अगर आप सिर्फ फाइलों को जानना चाहते हैं कर रहे हैं अलग या नहीं, प्रत्येक मशीन पर md5sum के साथ उन्हें हैश।

आप कुछ ऐसा भी देख सकते हैं sshfs, लेकिन मुझे नहीं पता कि एल्गोरिदम कितनी अच्छी तरह से उस पर प्रदर्शन करता है।


10
2017-08-26 17:19



यह देखने का एक आसान तरीका है कि फाइलें अलग हैं या नहीं rsync --dry-run। - Gerald Combs
मैं एसएसएचएफएस के बारे में भूल गया था। यह मेरे लिए बहुत अच्छा काम किया ... - arod


एक तरीका, यदि आपके सिस्टम पर यह संभव है तो रिमोट फाइल सिस्टम को बस माउंट करना होगा sshfs


7
2017-08-26 17:19



diff आमतौर पर एक-शॉट कार्रवाई होती है, जैसे कॉन्फ़िगरेशन अंतर की जांच करना। हर समय फाइल सिस्टम बढ़ाना संभव है, लेकिन अविश्वसनीय नहीं है। मैं बेहतर टैर और एसपीपी होगा। - Alexey Timanovsky


आप उपयोग कर सकते हैं rsync शुष्क रन मोड में, संक्षेप में सुझाव दिया गया है एक और जवाब। यह किसी भी फाइल को सूचीबद्ध करता है जो अलग हैं।

इसके लिए, का प्रयोग करें rvnc विकल्प (r= पुनरावर्ती, v= वर्बोज़, n= सूखी दौड़, c= चेकसम)। साथ में rsync पुल मोड में (rsync [OPTION...] [USER@]HOST:SRC... [DEST]), एक उदाहरण है:

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

याद है, यह कोई जानकारी नहीं देता है कि स्थानीय या दूरस्थ फ़ाइल नई है या नहीं। बस अगर वे अलग हैं।


3
2018-04-29 12:21





  • अपनी स्थानीय मशीन पर, उस निर्देशिका की एक रिकर्सिव कॉपी बनाएं जिसे आप अलग करना चाहते हैं। उदाहरण के लिए:

    cp -R dir replica
    
  • स्थानीय प्रतिलिपि पर दूरस्थ निर्देशिका को दोहराने के लिए rsync का उपयोग करें:

     rsync remote:/path/to/dir replica
    
  • स्थानीय निर्देशिका और दूरस्थ एक की स्थानीय प्रतिकृति के बीच अंतर खोजने के लिए diff का उपयोग करें:

    diff dir replica
    

2
2018-01-30 13:16