דף הבית » איך ל » המדריך למתחילים לסינכרון נתונים עם Rsync

    המדריך למתחילים לסינכרון נתונים עם Rsync

    פרוטוקול rsync יכול להיות די פשוט לשימוש עבור משימות גיבוי / סנכרון רגילות, אבל חלק מהתכונות המתקדמות יותר שלה עשוי להפתיע אותך. במאמר זה, אנחנו הולכים להראות איך אפילו את הנתונים הגדולים hoarders ו חובבי גיבוי יכול להפעיל rsync כפתרון יחיד עבור כל הנתונים שלהם יתירות הצרכים.

    אזהרה: גיקים מתקדמים בלבד

    אם אתה יושב שם וחושב "מה לעזאזל הוא rsync?" או "אני רק משתמש rsync עבור משימות פשוטות באמת", ייתכן שתרצה לבדוק את המאמר הקודם שלנו על איך להשתמש rsync גיבוי הנתונים שלך על לינוקס, אשר נותן היכרות עם rsync, מנחה אותך דרך ההתקנה, ומציג את הפונקציות הבסיסיות יותר שלה. ברגע שיש לך הבנה טובה של איך להשתמש rsync (בכנות, זה לא כל כך מורכב) והם נוח עם מסוף לינוקס, אתה מוכן לעבור על המדריך הזה מתקדם.

    הפעלת rsync ב - Windows

    ראשית, בואו לקבל הקוראים של Windows שלנו על אותו דף כמו לינוקס שלנו gurus. למרות ש- rsync בנוי לפעול במערכות דמויות יוניקס, אין סיבה שלא תצליח להשתמש בו באותה קלות ב- Windows. Cygwin מייצרת API נפלא לינוקס שאנחנו יכולים להשתמש בו כדי להפעיל rsync, כך ראש אל אתר האינטרנט שלהם ולהוריד את גירסת 32 סיביות או 64 סיביות, בהתאם למחשב שלך.

    ההתקנה היא פשוטה; אתה יכול לשמור את כל האפשרויות על ערכי ברירת המחדל שלהם עד שתגיע למסך "בחר חבילות".

    עכשיו אתה צריך לעשות את אותם השלבים עבור VIM ו SSH, אבל החבילות הולכים להיראות קצת שונה כאשר אתה הולך לבחור אותם, אז הנה כמה צילומי מסך:

    התקנת Vim:

    התקנת SSH:

    לאחר שבחרת את שלוש החבילות, המשך ללחוץ על הבא עד שתסיים את ההתקנה. אז אתה יכול לפתוח Cygwin על ידי לחיצה על הסמל כי ההתקנה להציב על שולחן העבודה שלך.

    פקודות rsync: פשוט עד מתקדם

    עכשיו, כי משתמשי Windows נמצאים באותו דף, בואו נסתכל על הפקודה rsync פשוטה, ולהראות כיצד השימוש של כמה מתגים מתקדמים יכולים להפוך במהירות את זה מורכב.

    נניח שיש לך חבורה של קבצים שצריכים לגבות - מי לא בימים אלה? אתה תקע את הכונן הקשיח הנייד שלך כדי שתוכל לגבות את קבצי המחשבים שלך, ולהוציא את הפקודה הבאה:

    rsync -a / home / geek / files / / mnt / usb / files /

    או, איך זה ייראה על מחשב Windows עם Cygwin:

    rsync -a / cygdrive / c / files / / cygdrive / e / files /

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

    גיבוי הקבצים שלך לכונן קשיח חיצוני ולאחר מכן לשמור על הכונן הקשיח באותו מיקום כמו המחשב שלך הוא רעיון רע מאוד, אז בואו נסתכל על מה זה היה דרוש כדי להתחיל לשלוח את הקבצים דרך האינטרנט למחשב אחר ( אחד ששכרת, בן משפחה של, וכו ').

    rsync -av -delete -e ssh -p 12345 '/ home / geek / files / [email protected]: / home / geek2 / files /

    הפקודה הנ"ל תשלח את הקבצים שלך למחשב אחר עם כתובת IP של 10.1.1.1. זה היה למחוק קבצים זרים מהיעד כי כבר לא קיים בספריית המקור, פלט את שמות הקבצים מועברים אז יש לך מושג מה קורה, ואת המנהרה rsync דרך SSH על יציאה 12345.

    ה -a -v -e --delete מתגים הם חלק הבסיסיים ביותר נפוץ; אתה צריך כבר יודע הרבה על אותם אם אתה קורא את זה הדרכה. בוא נלך על כמה מתגים אחרים, כי הם התעלמו לפעמים אבל שימושי להפליא:

    --התקדמות - מתג זה מאפשר לנו לראות את התקדמות ההעברה של כל קובץ. זה שימושי במיוחד בעת העברת קבצים גדולים דרך האינטרנט, אבל יכול פלט כמות חסרת מידע כאשר רק העברת קבצים קטנים ברשת מהירה.

    פקודת rsync עם --התקדמות החלפה כגיבוי מתבצעת:

    --חלקי - זה עוד בורר כי הוא שימושי במיוחד בעת העברת קבצים גדולים דרך האינטרנט. אם rsync נקטע מסיבה כלשהי באמצע העברת קבצים, הקובץ המועבר חלקית נשמר בספריית היעד והעברה חוזרת כאשר היא הופסקה כאשר הפקודה rsync מבוצעת שוב. בעת העברת קבצים גדולים דרך האינטרנט (למשל, כמה ג 'יגה בייט), אין דבר יותר גרוע מאשר שיש כמה הפסקת אינטרנט השני, מסך כחול, או טעות אנוש הנסיעה במעבר הקובץ שלך ואת הצורך להתחיל מחדש.

    -עמ ' - בורר זה משלב --התקדמות ו --חלקי, אז להשתמש בו במקום זה יגרום הפקודה rsync שלך קצת יותר מסודר.

    -z או --לדחוס - בורר זה יגרום ל- rsync לדחוס נתוני קובץ בזמן שהוא מועבר, ובכך להפחית את כמות הנתונים שיש לשלוח ליעד. זה בעצם מתג נפוץ למדי, אבל הוא רחוק מלהיות חיוני, רק באמת ליהנות לך על העברות בין חיבורים איטיים, והוא עושה דבר עבור סוגי הקבצים הבאים: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, MP3, mp4, ogg, סל"ד, tbz, tgz, z, zip.

    או --קריא אדם - אם אתה משתמש --התקדמות לעבור, אתה בהחלט רוצה להשתמש בזה גם כן. כלומר, אלא אם אתה רוצה להמיר בתים מגה בייט על לטוס. ה Switch ממיר את כל המספרים outputted לפורמט קריא אדם, אז אתה באמת יכול להבין את כמות הנתונים המועברים.

    -n או --ריצה יבשה - בורר זה חיוני כדי לדעת מתי אתה כותב לראשונה את התסריט שלך ב- rsync ובודק אותו. זה מבצע ריצת ניסיון אבל לא ממש לבצע שינויים - השינויים יהיו עדיין outputted כרגיל, אז אתה יכול לקרוא על הכל ולוודא שזה נראה בסדר לפני גלגול התסריט שלך לתוך הייצור.

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

    --לא לכלול מ- - בורר זה משמש לקישור לרשימת אי הכללה המכילה נתיבי ספריות שאינך רוצה לגבות. זה פשוט צריך קובץ טקסט רגיל עם ספרייה או נתיב קובץ על כל שורה.

    --כוללים מ - דומה ל --לא לכלול מ-, אבל זה קישורים לקובץ המכיל ספריות נתיבי קובץ של נתונים אתה רוצה לגבות.

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

    --קובץ לוג - זה מאפשר לך לשלוח את הפלט rsync לקובץ יומן. אנו בהחלט ממליצים על זה עבור גיבויים אוטומטיים שבו אתה לא שם כדי לקרוא את הפלט בעצמך. תמיד לתת קבצי יומן פעם אחת על הזמן הפנוי שלך כדי לוודא שהכל עובד כראוי. כמו כן, זהו מתג חיוני עבור מנהל מערכת להשתמש, אז אתה לא נשאר תוהה איך הגיבויים שלך נכשל תוך השארת מתמחה אחראי.

    בואו נסתכל על הפקודה שלנו עכשיו שיש לנו עוד כמה מתגים הוסיף:

    rsync -avzhP --delete --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' / home / Geek / files / [email protected]: / home / geek2 / files /

    הפקודה היא עדיין די פשוטה, אבל עדיין לא יצרנו פתרון גיבוי הגון. למרות שהקבצים שלנו נמצאים כעת בשני מיקומים פיזיים שונים, גיבוי זה אינו עושה דבר כדי להגן עלינו מאחד הגורמים העיקריים לאובדן נתונים: שגיאה אנושית.

    גיבויים של תמונת מצב

    אם בטעות למחוק קובץ, וירוס משחית את כל הקבצים שלך, או משהו אחר קורה שבו הקבצים שלך משתנים בצורה לא רצויה, ואז אתה מפעיל את סקריפט גיבוי rsync שלך, הנתונים מגובים שלך מוחלף עם השינויים הלא רצויים. כאשר דבר כזה מתרחש (לא אם, אבל כאשר), פתרון הגיבוי שלך לא עשה דבר כדי להגן עליך מפני אובדן הנתונים שלך.

    היוצר של rsync הבין זאת, והוסיף --גיבוי ו --גיבוי- dir ארגומנטים כך שמשתמשים יכולים להריץ גיבויים דיפרנציאליים. הדוגמה הראשונה באתר של rsync מראה סקריפט שבו גיבוי מלא מופעל כל שבעה ימים, ולאחר מכן את השינויים בקבצים אלה מגובים בספריות נפרדות מדי יום. הבעיה עם שיטה זו היא כי כדי לשחזר את הקבצים שלך, אתה צריך ביעילות לשחזר אותם שבעה פעמים שונות. יתר על כן, רוב Geeks להפעיל את הגיבויים מספר פעמים ביום, כך שאתה יכול בקלות יש 20 + ספריות גיבוי שונים בכל זמן נתון. לא רק מחלים את הקבצים שלך עכשיו כאב, אבל אפילו רק להסתכל דרך הנתונים מגובים שלך יכול להיות זמן רב מאוד - היית צריך לדעת בפעם האחרונה הקובץ השתנה כדי למצוא את העותק המגובה האחרון. נוסף על כך, זה לא יעיל לרוץ רק שבועי (או אפילו פחות לעתים קרובות במקרים מסוימים) גיבויים מצטבר.

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

    להעמיד פנים שיש לנו סקריפט גיבוי פועל באופן אוטומטי מגבה את הנתונים שלנו כל שעתיים. בכל פעם ש- rsync עושה זאת, הוא מגדיר כל גיבוי בפורמט: Backup-month-time-time.

    לכן, בסוף היום הרגיל, תהיה לנו רשימה של תיקיות בספריית היעד שלנו באופן הבא:

    בעת חציית כל הספריות האלו, תראה כל קובץ מספריית המקור בדיוק כפי שהיה באותו זמן. עם זאת, לא יהיו כפילויות על פני כל שתי ספריות. rsync משיג את זה עם השימוש hardlinking דרך --link-dest = DIR ויכוח.

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

    #! / bin / bash

    #copy old time.txt to time2.txt

    כן | cp ~ / backup / time.txt ~ / backup / time2.txt

    #overwrite קובץ time.txt הישן עם הזמן החדש

    הד 'תאריך +'% F-% אני% p ''> ~ / backup / time.txt

    #make את קובץ היומן

    "~ ~ / גיבוי / rsync-heate +"% F -% I% p "'

    #rsync פקודה

    rsync -avzhPR --chmod = Du = rwx, dgo = rx, Fu = rw, Fgo = r --delete --stats --log-file = ~ / backup / rsync-heate + "% F-% I% p "" log -exclude-from '~ / exclude.txt' - link-dest = / home / geek2 / files / 'cat ~ / backup / time2.txt' -e 'ssh -p 12345' / home / Geek / files / [email protected]: / home / geek2 / files / 'date + "% F-% אני% p"' /

    # אל תשכח לסקור את קובץ היומן ולשים אותו עם הגיבוי

    scp-12345 ~ / Backup / rsync-'cat ~ / backup / time.txt..log [email protected]: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync -cat ~ / backup / time.txt'.log

    זה יהיה תסריט טיפוסי rsync תמונת. במקרה שאיבדנו אותך איפשהו, בואו לנתח את זה חתיכת חתיכה:

    השורה הראשונה של הסקריפט שלנו מעתיקה את התוכן של time.txt ל- time2.txt. הצינור כן הוא לאשר שאנחנו רוצים להחליף את הקובץ. הבא, אנחנו לוקחים את הזמן הנוכחי ולשים אותו time.txt. קבצים אלה יגיעו שימושי מאוחר יותר.

    השורה הבאה עושה את קובץ היומן rsync, מתן שמות לזה rsync-date.log (כאשר התאריך הוא התאריך והשעה בפועל).

    עכשיו, הפקודה rsync מורכבים שאנחנו כבר מזהיר אותך:

    -avzhPR, -e, --delete, --stats, --log-file, --exclude-from, - Link-dest - רק את המתגים דיברנו קודם לכן; לגלול למעלה אם אתה צריך רענון.

    --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - אלה ההרשאות עבור ספריית היעד. מאז אנחנו עושים את המדריך הזה באמצע הסקריפט rsync שלנו, אנחנו צריכים לציין את ההרשאות כך שהמשתמש שלנו יכול לכתוב קבצים אליו.

    שימוש בפקודות תאריך וחתול

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

    קובץ היומן מצוין כ:

    ~ /% גיבוי / rsync-heate + "% F-% אני% p" '

    לחלופין, יכולנו לציין אותו כך:

    ~ / backup / rsync-'cat ~ / backup / time.txt'.log

    כך או כך, --קובץ לוג הפקודה צריכה להיות מסוגלת למצוא את הקובץ שנוצר בעבר יומן יומן לכתוב את זה.

    קובץ היעד של הקישור מוגדר כ:

    --link-dest = / home / geek2 / files / 'cat ~ / backup / time2.txt'

    משמעות הדבר היא כי --Link-dest הפקודה ניתנת לספריה של הגיבוי הקודם. אם אנחנו מריצים גיבויים כל שעתיים, וזה 4:00 אחר הצהריים בזמן שאנחנו רץ את התסריט, ואז --Link-dest הפקודה מחפשת את הספרייה שנוצרה ב -2: 00 ומעבירה רק את הנתונים שהשתנו מאז (אם בכלל).

    כדי לחזור על זה, זה למה time.txt מועתקים time2.txt בתחילת הסקריפט, אז --Link-dest הפקודה יכולה להתייחס אליו במועד מאוחר יותר.

    ספריית היעד מוגדרת כ:

    [email protected]: / home / geek2 / files / 'תאריך + "% F-% אני% p"

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

    לבסוף, אנו מוודאים כי עותק של קובץ היומן ממוקם בתוך הגיבוי.

    scp-12345 ~ / Backup / rsync-'cat ~ / backup / time.txt..log [email protected]: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync -cat ~ / backup / time.txt'.log

    אנו משתמשים עותק מאובטח על יציאה 12345 לקחת את יומן rsync ולמקם אותו במדריך הנכון. כדי לבחור את קובץ היומן הנכון ולוודא שהוא מסתיים במקום הנכון, הקובץ time.txt חייב להיות הפניה באמצעות הפקודה חתול. אם אתה תוהה למה החלטנו cat.txt החתול במקום רק באמצעות הפקודה תאריך, זה בגלל הרבה זמן יכול התרחש בזמן הפקודה rsync היה פועל, כדי לוודא שיש לנו את הזמן הנכון, אנחנו פשוט חתול מסמך הטקסט שיצרנו קודם לכן.

    אוטומציה

    השתמש Cron על לינוקס או מתזמן המשימות ב- Windows כדי להפוך את סקריפט rsync שלך. דבר אחד אתה צריך להיות זהיר הוא לוודא שאתה מסיים את כל התהליכים הפועלים כרגע rsync לפני שתמשיך אחד חדש. מתזמן המשימות נראה לסגור את כל המופעים כבר פועל באופן אוטומטי, אבל עבור לינוקס תצטרך להיות קצת יותר יצירתי.

    רוב ההפצות לינוקס יכול להשתמש בפקודה pkill, אז רק כדי להיות בטוח להוסיף את הבאים לתחילת סקריפט rsync שלך:

    pkill -9 rsync

    הצפנה

    לא, עדיין לא סיימנו. סוף סוף יש לנו פתרון גיבוי פנטסטי (בחינם!) במקום, אבל כל הקבצים שלנו עדיין רגישים לגניבה. אני מקווה, אתה מגבה את הקבצים שלך למקום כלשהו מאות קילומטרים. לא משנה כמה בטוח כי מקום רחוק, גניבה פריצה תמיד יכול להיות בעיות.

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

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

    מסיבה זו, זה הכי טוב / הכי קל להשתמש איזה סוג של הצפנת דיסק, כגון BitLocker עבור Windows או DM-crypt עבור לינוקס. בדרך זו, הנתונים שלך מוגנים במקרה של גניבה, אך ניתן להעביר קבצים באמצעות rsync וההצפנה שלך לא תפריע לביצועים שלה. ישנן אפשרויות אחרות הזמינות כי העבודה דומה rsync או אפילו ליישם צורה כלשהי של זה, כגון Duplicity, אבל הם חסרים חלק מהתכונות rsync יש להציע.

    לאחר שתגדיר את הגיבוי של תמונת המצב שלך במיקום מחוץ לאתר ותצפין את הכוננים הקשיחים של המקור והכוונה, תן לעצמך טפיחה על גב המאסטר של rsync ויישם את פתרון גיבוי הנתונים הבטוח ביותר האפשרי.