17Aug

המדריך למתחילים לסינכרון נתונים עם 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-/home/geek/files/ /mnt/usb/files/

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

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

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

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

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

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

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

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

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

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

-P - מתג זה משלב - התקדמות ו - partial, כך להשתמש בו במקום זה יגרום הפקודה rsync שלך קצת יותר מסודר.

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

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

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

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

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

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

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

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

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

rsync -avzhP --delete --stats --log-file = /home/geek/rsynclogs/ backup.log --exclude-מתוך '/home/geek/ exclude.txt'- ssh-12345 '/home/geek/files/ [email protected]: /home/geek2/files/

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

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

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

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

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

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

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

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

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

#!/bin/ bash

#copy old.txt to time2.txt

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

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

הד 'תאריך + "% F-% אני% p" `& gt;~ /backup/ time.txt

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

הד "" & gt;~ /backup/ rsync-dzhate -chdod = Du = rwx, dgo = rx, Fu = rw, Fgo = r --delete --stats --log-file = ~ /backup/ rsync -date + "% F-% I% p". log --exclude-from ~ ~ / exclude.txt '- link-dest = /home/geek2/files/ `cat ~ /backup/Time.txt` -e 'ssh-12345' /home/geek/files/ [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

יהיה תסריט טיפוסי של 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, לפי סדר הופעתם.הערה: אנו מודעים לכך שישנן דרכים אחרות לבצע פונקציונליות זו, במיוחד באמצעות שימוש במשתנים הצהרתיים, אך לצורך מדריך זה, החלטנו להשתמש בשיטה זו.לחלופין, יכולנו לציין את זה כ:

~ /backup/ rsync-`cat ~ /backup/ time.txt`.

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

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

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

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

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

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

[email protected]: /home/geek2/files/ 'תאריך +% F -% I% 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

הצפנה

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

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

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

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

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