שאלה איך הבדל על ssh?


כיצד ניתן להבדיל קבצים / תיקיות בין מכונות ובלבד שהקישוריות היחידה הזמינה היא ssh?


166
2017-08-26 17:17




יש שאלה דומה יחסית ב # 16661: כיצד ניתן לבדל שני שרתי RedHat Linux?. התשובה שם, כדי לשמור את הקליקים, היא rsync -ani --delete / root@remotehost:/ אבל את התשובה המלאה נותן פירוט נוסף. - Owen Blacker
תשובות רבות למדי כאן, אבל איזו גישה היא מהירה יותר? - pl1nk
אף אחד לא משתמש חזותית הבדל כלים? - Dan Dascalescu


תשובות:


אתה יכול לעשות את זה עם זה של באש תחליף התהליךYou

 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-s "ssh-2222" <SRC> <DST> - Samoth


הנה עוד מתכון שורת הפקודה מהירה ומלוכלכת. שלא כמו התשובה שנבחרה, זה עובד בתוך makefiles:

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

15
2017-12-27 18:43



אם העריכה שלי אינה עוברת: שיטה זו עדיפה על התשובה שנבחרה משום שהיא פועלת עם makefiles. - Chris Redford
@ סטיב דיקינסון - מה זאת אומרת "זה עובד בתוך makefiles"? - Martin Vegter
זה גם פתרון נחמד אם אתה סובל אלרגיה vim כמוני. :) יצרתי סקריפט bash משווה את אותו קובץ על שני המארחים השונים, שימושי כאשר העברת שירותים בין מכונות השוואה קבצי תצורה. ראה gist.github.com/jhqv/dbd59f5838ae8c83f736bfe951bd80ff - Janek


השתמש ב- scp כדי להביא את הקבצים למכונה משותפת ולהפיץ אותם שם?

או, אם אתה רק רוצה לדעת אם הקבצים הם שונה או לא, חשיש אותם על כל מכונה.

אתה יכול גם להסתכל לתוך משהו כמו SSHFS, אבל אני לא יודע כמה טוב אלגוריתם כמו הבדל מבצעת על זה.


10
2017-08-26 17:19



דרך קלה יותר לראות אם הקבצים שונים או לא rsync --dry-run. - Gerald Combs
שכחתי על SSHFS. זה עבד נהדר בשבילי ... - arod


אחת הדרכים, אם זה אפשרי על המערכת שלך יהיה פשוט לעלות את מערכת הקבצים מרחוק עם sshfs.


7
2017-08-26 17:19



הבדל הוא בדרך כלל פעולה חד פעמית, כמו לבדוק הבדלים config. מערכת הקבצים הרכבה בכל פעם אפשרי, אבל לא convinient. מוטב שאזרוק וזיין. - Alexey Timanovsky


אתה יכול להשתמש rsync במצב יבש, כפי שהוצע בקצרה עוד תשובה. הוא מפרט את כל הקבצים השונים.

לשם כך, השתמש rvnc אפשרויות (r= רקורסיבי, v= verbose, 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