rsync+ssh – פתרון הגיבוי האולטימטיבי

סיפרתי לכם על השאיפה שלי להקים שרת NAS "שיחזיק" את כל הגיבויים החשובים שלי (תוכנות, סרטים, מוזיקה, מסמכים ועוד…). מאחר ש- FREENAS עדיין לא תומך ב- SATA2 החלטתי לפעול בכיוון הבא: התקנתי על שרת יעודי את Ububtu Dapper Server בתצורתו המינימלית ביותר (ללא LAMP). בחרתי בהפצה זאת מפני שמדובר בהפצה מאוד יציבה (תכונה מאוד חשובה לשרת שמחזיק גיבויים). פתרון הגיבוי שהקמתי מתבסס על RSYNC ו- SSH. מספר מילים על RSYNC ו-SSH:

  • rsync היא תוכנה קטנה וגאונית. יש לה יכולות עצומות כשאני משתמש כרגע בתכונה אחת בלבד והיא תכונת ה- mirroring. כלומר rsync יצור תמונת ראי של קבצי הגיבוי החשובים בשרת המרוחק.
  • היתרון ב- rsync הוא בביצוע השוואת קבצים מאוד חכמה: נניח ששיניתי 1 בייט בקובץ של 1 גיגהבייט. תוכנת גיבוי רגילה תרגיש שמדובר בקבצים שונים ולכן תעתיק מחדש את כל ה- 1 גיגה לשרת. rsync (אמרתי שהיא תוכנה גאונית?) מחלקת את הקבצים לבלוקים רבים, ומבצעת השוואה לבלוקים אלו, ולכן תעלה לשרת הגיבוי רק את הבלוק שהשתנה (בפועל היא תעביר רק מספר קילובייט) ותיצור קובץ הזהה לחלוטין לקובץ המקורי תוך מספר שניות בלבד.
  • הפקודה הבסיסית לסנכרון תיקיות בין מחשב מקומי למחשב מרוחק (NAS) היא:
    rsync -arv –delete local_dir NAS:destination_dir
    הבעיה בפקודה היא שהשרת המרוחק מבקש סיסמה להזדהות, ולכן לא ניתן להשתמש בפקודה זאת בסקריפט שרץ באופן עצמוני. בנוסף אין הצפנה של הנתונים (פרמטר שלא חשוב לי, אבל חשוב במקומות העבודה)
  • ssh הוא shell מאובטח. בפתרון שבחרתי לכל צד (קליינט ושרת) יש זוג מפתחות: פרטי וציבורי. כשהקליינט מעוניין להעביר את המידע לשרת המרוחק הוא מצפין את המידע בעזרת המפתח הציבורי של השרת המרוחק. רק לשרת המרוחק יש את המפתח הפרטי שיכול לפתוח את ההצפנה, ולקבל את הנתונים האמיתיים.

הפתרון:

לצורך ביצוע פעולת גיבוי מוצפנת (SSH ) וחכמה (RSYNC) יש לבצע את השלבים המתוארים באיור הבא (כתבתי באנגלית מטעמי נוחות):

rsync_ssh_backup.jpg

הערות:

  • בשלב 1 קובעים את שיטת ההצפנה (dsa) ויוצרים זוגות של מפתחות
  • בשלב 2 מעתיקים את המפתח הציבורי לשרת המרוחק.
  • בשלב 3 מכניסים את המפתח הציבורי למחסן המפתחות המאושרים.
  • בשלב 5 ניתן להוסיף את האופציה z וכך לדחוס את המידע המועבר לשרת החיצוני.
  • ניתן להריץ את הסקריפט באופן ידני ויבש (dry-run) עם האופציה -n וכך לראות אילו שינויים אמורים להתבצע.
My Signature
פורסם בקטגוריה לינוקס ותוכנה חופשית. אפשר להגיע לכאן עם קישור ישיר.

5 תגובות בנושא rsync+ssh – פתרון הגיבוי האולטימטיבי

  1. מאת שזיף‏:

    נשמע מצויין
    אבל למה להריץ את זה על dapper ? אולי תנסה להריץ את זה על ה fiesty ? היא הרבה יותר טובה מהדאפר …

  2. מאת ilanshavit‏:

    כי מדובר בפנטיום 2 עם 128 מגה זכרון. התקנתי את Dapper-Server כי היא מאפשרת בפשטות התקנה מינימאלית (ללא סביבה גרפית) שזה בדיוק מה שאני צריך (דרך אגב גם האתר הזה רץ על מחשב אחר בתצורה דומה: LAMP Dapper-Server). המחשב לא "יסחוב" את Feisty וזה ממש לא לעניין.

  3. מאת תומר‏:

    אני לא חושב שיש הבדל מהותי בין ההפצות ברגע שאתה מסיר מהן את כל הרכיבים המכבידים (Apache, Mysql, X וכו'). לא הסרת את LAMP, כי האות L נשארה.

    כתבתי לא מזמן אצלי מאמר על SSH. לדעתי הוא מאד ממצא וכולל את השימושים החשובים של SSH שהתייחסתם אליהם פה כבדרך אגב או שלא ציינת אותם כלל.

  4. מאת ilanshavit‏:

    תומר שלום
    לגבי החלק הראשון של ההערה שלך (ההבדלים בין ההפצות): אתה צודק, אבל צריך לבצע עבודה מסוימת כדי להסיר את החלקים שאינם רלוונטים. כאן מקבלים דיסק מוכן לעבודה כסרבר. ההתקנה לוקחת כ- 5 דקות כשהיא תופסת שטח דיסק נמוך מאוד (פחות מ- 200 מגהבייט). המערכת נבדקה ויציבה מאוד (מה לא בטוח שתקבל אם תיקח הפצה ותפרק ממנה מרכיבים באופן ידני). ubuntu-server להבדיל מ- ubuntu-desktop בנויה בדיוק למשימות הללו. כשמתקינים אותה ניתן לבחור ב- GRUB להתקין אותה עם LAMP או בתצורת שרת ללא LAMP.
    לגבי ההערה השנייה (ssh): זה לא מאמר מקיף על rsync או ssh אלא רק בא לתאר את פתרון הגיבוי שלי. בכל מקרה, אני ניגש לאתר שלך לקרוא את המאמר על SSH (-:

  5. מאת ilanshavit‏:

    תומר: קראתי את המדריך שלך על ssh והוא ממש מעולה!!!
    למעוניינים: http://tomer.blogli.co.il/archives/67

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *