سؤال كيف فرق على ssh؟


كيف يمكنني اختلاف الملفات / المجلدات عبر الأجهزة بشرط أن يكون الاتصال الوحيد المتاح هو ssh؟


166
2017-08-26 17:17


الأصل


هناك سؤال مماثل نسبيا في # 16661: كيف يمكنني أن أنشر خادوم RedHat Linux؟. الجواب هنا ، لحفظ النقرات ، هو rsync -ani --delete / root@remotehost:/ لكن الجواب الكامل يعطي المزيد من التفاصيل. - Owen Blacker
هناك الكثير من الإجابات هنا ، ولكن ما هو النهج الأسرع؟ - pl1nk
لا أحد يستخدم أدوات فرق البصرية؟ - Dan Dascalescu


الأجوبة:


يمكنك فعل ذلك مع باش عملية استبدال:

 diff foo <(ssh myServer 'cat foo')

أو ، إذا كان كلاهما على الخوادم البعيدة:

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

143
2017-08-26 17:22



نعم ، شيء من هذا القبيل ، ولكن للأدلة :) - Alexey Timanovsky
كيف تقصد للأدلة ، يمكن أن تحل دائمًا محل القطة مع ls - Kyle Brandt♦
أظن أن "للأدلة" يعني القيام بموجة عودية - Ian Clelland
لقد وجدت أن هذه التقنية لا تعمل لي إذا كان المضيف البعيد يتطلب كلمة مرور. يبدو أن موجه كلمة المرور لا يعمل بشكل جيد مع إعادة التوجيه ولا يمكن إتمامه بنجاح. إذا كنت تستخدم مفاتيح ssh ، فلن تكون هناك مشكلة. - Adam Franco
هذا هو حل عام كبير للعديد من المشاكل. بدلاً من "cat foo" يمكنك استخدام "find / foo / bar -type f | أثناء قراءة الملف لا صدى "**** ملف $"؛ قطة "$ file"؛ القيام به ، وسيكون لديك قائمة من أسماء الملفات ومحتويات الملفات إلى فرق. - 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 .


99
2018-05-15 08:55



vimdiff حلوة ، شكرا! - Max Felker
ماذا عن الدلائل؟ :) - Perlnika
هنا مثال على ذلك: vimdiff .bash_profile scp: //vaibhavc@10.217.212.97//home/vaibhavc/.bash_profile - vaichidrewar
2 مائلة // بعد 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


هنا آخر وصفة سطر الأوامر السريعة والقذرة. على عكس الإجابة المختارة ، يعمل داخل makefiles:

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

15
2017-12-27 18:43



إذا كان تعديلي لا يمر: تفوق هذه الطريقة على الإجابة المختارة لأنها تعمل مع makefiles. - Chris Redford
Steve ديكنسون - ماذا تقصد ب "أنها تعمل داخل makefiles"؟ - Martin Vegter
هذا هو أيضا حل لطيف إذا كنت تعاني من حساسية vim مثلي. :) لقد قمت بإنشاء برنامج نصي bash الذي يقارن نفس الملف على مضيفين مختلفين ، وهو مفيد عند ترحيل الخدمات بين الأجهزة ومقارنة ملفات التكوين. نرى gist.github.com/jhqv/dbd59f5838ae8c83f736bfe951bd80ff - Janek


استخدم scp لإحضار الملفات إلى جهاز مشترك وإخفائها هناك؟

أو ، إذا كنت تريد فقط معرفة ما إذا كانت الملفات هي مختلفة أم لا ، تجزئة لهم مع md5sum على كل جهاز.

يمكنك أيضا النظر في شيء من هذا القبيل سشفس، ولكن لا أعرف مدى جودة خوارزمية مثل فرق يؤدي أكثر من ذلك.


10
2017-08-26 17:19



طريقة أسهل لمعرفة ما إذا كانت الملفات مختلفة أم لا rsync --dry-run. - Gerald Combs
كنت قد نسيت عن SSHFS. هذا عمل عظيم بالنسبة لي... - arod


طريقة واحدة ، إذا كان من الممكن على النظام الخاص بك سيكون ببساطة تحميل نظام الملفات عن بعد مع سشفس.


7
2017-08-26 17:19



الفرق هو عادة عمل طلقة واحدة ، مثل للتحقق من فرق التكوين. تركيب نظام الملفات في كل مرة هو ممكن ، ولكن ليس convinient. كنت أفضل القطران و scp. - 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