מדריכי איך לעשות

העברת קבצים גדולים בין שני שרתים בעזרת פקודת rsync על גבי SSH

  • 16 דקות קריאה
  • צוות Hostragons
העברת קבצים גדולים בין שני שרתים בעזרת פקודת rsync על גבי SSH

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

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

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

מה זה rsync ולמה הוא נבחר להעברת קבצים גדולים?

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

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

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

מתי עליכם להשתמש בפקודת rsync על גבי SSH?

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

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

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

מה צריך לדעת לפני שמתחילים?

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

1. בדקו את גישת ה-SSH

עליכם להיות מסוגלים לקבוע חיבור SSH מהשרת המקורי לשרת היעד. החיבור הסטנדרטי נבדק כך: ssh משתמש@כתובת-ip-של-שרת-יעד. אם ה-SSH פועל על פורט שונה, החיבור נבדק כך: ssh -p 2222 משתמש@כתובת-ip-של-שרת-יעד. אם הבדיקה הזו לא הצליחה, גם rsync לא יעבוד. יש לבדוק את חומת האש, Fail2ban, פורט ה-SSH, הרשאות המשתמש ואימות הסיסמה או המפתח.

2. בדקו אם חבילת rsync מותקנת

ברוב הפצות לינוקס, rsync מותקנת כברירת מחדל; עם זאת, יש לבדוק זאת. במערכות מבוססות Debian ו-Ubuntu ניתן להשתמש בפקודה rsync --version. אם זה לא מותקן, ניתן להתקין אותו בעזרת הפקודה apt install rsync. בהפצות כמו AlmaLinux, Rocky Linux או CentOS ניתן להשתמש בפקודה dnf install rsync או yum install rsync. אם אתם משתמשים ב-VPS מבוסס לינוקס של Hostragons, ההתקנה בדרך כלל לוקחת כמה שניות.

3. חשבו את שטח הדיסק

אם אין מספיק מקום פנוי בשרת היעד, ההעברה תיכשל. כדי לראות את גודל התיקייה המקורית, ניתן להשתמש בפקודה du -sh /תיקייה/מקור. יש לבדוק את מצב הדיסק בשרת היעד בעזרת df -h. למעשה, יש להשאיר מקום לא רק לגודל הקובץ, אלא גם לקבצים זמניים ולוגים. לדוגמה, אם אתם מתכננים להעביר 500 ג'יגה-בייט נתונים, כדאי לתכנן לפחות 550-600 ג'יגה-בייט שטח פנוי בשרת היעד.

4. תכננו את השירותים הקריטיים ואת הקבצים המשתנים

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

פקודת rsync בסיסית: העברת קבצים בין שני שרתים

המבנה הבסיסי שבו נעשה שימוש הוא: rsync -avz /תיקייה/מקור/ משתמש@כתובת-ip-של-שרת-יעד:/תיקייה/יעד/. כאן -a הוא מצב הארכיון והוא שומר על המידע כמו הרשאות, חותמות זמן וקישורים סימבוליים. -v מספק פלט מפורט. -z מפעיל דחיסה במהלך ההעברה. הסלש בסוף התיקייה חשוב מאוד. אם תכתבו /תיקייה/מקור/, תוכן התיקייה יועבר ליעד; אם תכתבו /תיקייה/מקור, התיקייה עצמה תיווצר ביעד.

נניח שאתם רוצים להעביר את קבצי האתר בגודל 180 ג'יגה-בייט מתוך התיקייה /var/www/site/public_html/ מהשרת הישן לשרת החדש בנתיב /var/www/site/public_html/. הפקודה תעבוד כך: rsync -avz /var/www/site/public_html/ root@203.0.113.20:/var/www/site/public_html/. פעולה זו מעבירה את הקבצים מהשרת המקורי לשרת היעד דרך SSH.

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

פרמטרים מומלצים של rsync לאבטחה ועמידות

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

rsync -aHAXv --numeric-ids --partial --progress --append-verify -e ssh /תיקייה/מקור/ משתמש@כתובת-ip-של-שרת-יעד:/תיקייה/יעד/

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

מה לעשות אם אתם משתמשים בפורט SSH שונה?

למטרות אבטחה, ייתכן ש-Port SSH פועל על פורט שונה מ-22. במקרה זה יש לציין את פרמטר ה-SSH ב-rsync. לדוגמה: rsync -avz -e ssh -p 2222 /תיקייה/מקור/ משתמש@כתובת-ip-של-שרת-יעד:/תיקייה/יעד/. עם זאת, יש להשתמש בערך של פרמטר -e בשורת הפקודה. ההיגיון הנכון הוא: rsync -avz -e 'ssh -p 2222' /תיקייה/מקור/ משתמש@כתובת-ip-של-שרת-יעד:/תיקייה/יעד/.

ב-JavaScript ובחלק מהפאנלים, השימוש במרכאות יחידות יכול להתנהג בצורה שונה, לכן ודאו שהמרכאות נכונות בעת כתיבת הפקודה ישירות בטרמינל. אם אתם מתחברים בעזרת מפתח SSH, ניתן להוסיף גם את הפרמטר -i: rsync -avz -e 'ssh -p 2222 -i /root/.ssh/id_rsa' /תיקייה/מקור/ משתמש@כתובת-ip-של-שרת-יעד:/תיקייה/יעד/. שיטה זו משמשת לעיתים קרובות במשימות אוטומטיות ובגיבויים מבוססי cron.

בדיקות לפני ההעברה: שימוש ב--dry-run

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

פקודת בדיקה לדוגמה: rsync -avz --dry-run /var/www/site/ משתמש@כתובת-ip-של-שרת-יעד:/var/www/site/. בדו"ח תראו את הקבצים שיתקבלו, את התיקיות שיתווספו ואת סיכום הפעולה. אם תשתמשו בפרמטר --delete, השימוש ב-dry-run הופך להיות קריטי אף יותר. כיוון ש--delete עלול למחוק קבצים שבלתי קיימים במקור, השימוש הנכון בו יכול לשכפל את היעד בדיוק; השימוש בו בתיקיה שגויה עלול לגרום לאובדן נתונים חמור.

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

הגדרות דחיסה, רוחב פס והצפנה לביצועים

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

הפרמטר -z לדחיסה מסייע עם קבצי טקסט, לוגים וסוגים מסוימים של גיבויים. אולם בקבצים שכבר דחוסים כמו zip, tar.gz, jpg, mp4 או gzip, השימוש בו עשוי להעמיס על ה-CPU ולא לספק יתרון משמעותי. אם אתם מעבירים קבצי מדיה גדולים בין שני שרתים חזקים עם חיבור של 1 Gbps, תוכלו להשיג ביצועים טובים יותר ללא -z. מצד שני, ברוחב פס נמוך ובקבצים עם משקל טקסטואלי -z עשוי לחסוך משמעותית.

כדי להגביל את רוחב הפס, ניתן להשתמש ב--bwlimit. לדוגמה, --bwlimit=50000 מגביל את המהירות לכ-50 MB/s. זה חשוב כדי לא להעמיס על תנועת הרשת של אתר פעיל. ביצוע העברות במהירות מלאה בשעות העומס עשוי להשפיע על חוויית המשתמש. תכנון ההעברה לשעות הלילה, הגבלת רוחב הפס ומעקב אחרי ערכי הטעינה במהלך התהליך הוא רעיון טוב.

השוואה בין rsync, scp, SFTP ו-FTP

השוואה בין rsync, scp, SFTP ו-FTP

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

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

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

דוגמת תהליך העברת אתר חי

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

  • הכינו את השרת החדש עם השרת האינטרנט, PHP, מסד הנתונים ומודולים נחוצים.
  • הפחיתו את ערך ה-TTL של שם הדומיין ל-300 שניות לפני ההעברה. אתם יכולים לבחון את עמוד בדיקת דומיין וניהול דומיין לניהול שם הדומיין.
  • התחילו את ההעברה הראשונה של rsync כאשר האתר פעיל. שלב זה מעביר את רוב הנתונים הגדולים.
  • קחו גיבוי למסד הנתונים והעבירו אותו לשרת החדש.
  • הכניסו את האתר למצב תחזוקה באופן זמני.
  • הריצו את פקודת rsync השנייה כדי לסנכרן את הקבצים האחרונים שהשתנו.
  • עדכנו שוב את מסד הנתונים או השתמשו באסטרטגיית גיבוי מצטברת.
  • בדקו את הרשאות הקבצים, פתיחת האתר והלוגים בשרת החדש.
  • התקינו או חידשו את תעודת ה-SSL. המידע בעמוד התקנת תעודת SSL עשוי להיות מועיל.
  • הפנו את רשומות ה-DNS לכתובת ה-IP החדשה.

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

בדיקת שלמות הנתונים

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

כדי לבצע אימות checksum, ניתן להשתמש בפקודה: rsync -avc --dry-run /תיקייה/מקור/ משתמש@כתובת-ip-של-שרת-יעד:/תיקייה/יעד/. כאן, הפרמטר -c משווה את הקבצים לא רק לפי חותמות זמן וגודל, אלא גם לפי checksum. בשימוש עם נתונים גדולים, יש להשתמש בזהירות מכיוון שזה יכול להעמיס על ה-CPU והדיסק. עבור ארכיונים קריטיים, קבצי גיבוי של מסדי נתונים או מסמכים של לקוחות, אימות נוסף זה מספק ביטחון.

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

שגיאות נפוצות ופתרונות

שגיאת Permission denied

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

שגיאת No space left on device

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

שגיאת Connection reset או Broken pipe

בעת העברות ארוכות טווח, ייתכנו ניתוקים ברשת. אם אתם משתמשים בפרמטרים --partial ו--append-verify, תוכלו להריץ שוב את הפקודה ולהמשיך מהמקום שבו הפסקתם. כמו כן, הגדרות keepalive של SSH עשויות לעזור. בצד הלקוח, הגדרה כמו ServerAliveInterval 60 יכולה להפחית את הסיכון לניתוקים ריקים.

העברה מאוד איטית

האיטיות עשויה לנבוע ממספר קבצים, מגבלות I/O של הדיסק, העמסת דחיסה או קיבולת הרשת. כאשר יש הרבה קבצים קטנים, ייתכן שיצירת ארכיון tar קודם תהיה מהירה יותר במקרים מסוימים; אך במקרה זה יתרון השינויים מבוססי הקובץ של rsync יפחת. בקבצים גדולים שכבר דחוסים, נסו לבדוק את ההעברה בלי הפרמטר -z. בנוסף, השתמשו בכלים כמו iotop, htop ו-iftop כדי לקבוע היכן נמצא צוואר הבקבוק - האם ב-CPU, בדיסק או ברשת.

שיטות אבטחה מומלצות

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

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

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

שימוש ב-rsync לגיבויים אוטומטיים

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

ההיגיון לדוגמה: rsync -a --delete --bwlimit=30000 /var/www/site/ backup@כתובת-ip-של-גיבוי:/backup/site/. פקודה זו יכולה לסנכרן את תיקיית היעד עם המקור. עם זאת, יש להשתמש בפרמטר --delete בזהירות. אם קובץ נמחק במקור, הוא גם יימחק ביעד. לכן, באסטרטגיות גיבוי קריטיות, יש להעדיף פתרונות עם snapshot, תיקיות יומיות או תמיכה בגרסאות.

בפעולות אירוח, כלל הגיבוי 3-2-1 הוא הפניה טובה: לפחות 3 עותקים של הנתונים, ב-2 סביבות שונות, עם 1 עותק במקום שונה. rsync מפשט את העברת העותק בין השרתים במסגרת אסטרטגיה זו. עבור תשתית מקיפה יותר, ניתן לחזק את התכנית שלכם עם תכנים על פתרונות גיבוי ו-שירותי אחסון עסקיים.

רשימת בדיקות סופיות

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

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

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

שאלות נפוצות

מה קורה אם החיבור מתנתק במהלך השימוש בפקודת rsync על גבי SSH?

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

האם ניתן להעביר מסד נתונים ישירות בעזרת rsync?

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

האם נדרשת הרשאת root בשני השרתים כדי להשתמש ב-rsync?

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

האם הפרמטר --delete בטוח?

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

מה עדיף בהעברת קבצים גדולים, rsync או scp?

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

סיכום וצעדים הבאים

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

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

שתפו פוסט זה:

צוות Hostragons

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

צור קשר