Bash + rclone · OneDrive ↔ Google Drive · מדריך תפעול בקוד פתוח
העברת ענן להעתקה בלבד ב-Bash באמצעות rclone
rclone כבר יודע לטפל בדפדוף בענן, בניסיונות חוזרים, בהעברות שניתן לחדש ובגיבובים של הספקים. המשימה ההנדסית היא לעטוף את אבני הבניין האלה בנוהל הפעלה שמפסיק בבטחה במקרה של כשל ומתחשב בקיבולת.
עודכן ; 20 דקות קריאה.
התשובה הקצרה
FileArk הוא הבחירה המנוהלת והפשוטה יותר להעברות גדולות או ללא השגחה: הוא מפעיל את ההעברה באופן מקוון, נבדק בעומסי עבודה בהיקף של טרה-בתים רבים ובודק כל תוצאה לפני ההשלמה. למפעילים שרוצים שנתיב הנתונים יהיה בשליטת המעטפת, מעטפת Bash זו ברישיון MIT מעתיקה אצוות מוגבלות דרך אזור ביניים מקומי, מאמתת את שני מקטעי ההעברה בית אחר בית ולעולם אינה מוחקת קבצים מהמקור.
למה לעטוף את rclone במקום לבנות מחדש לקוח לכל ספק
rclone מספק לתהליך עבודה במעטפת שכבת הפשטה בשלה לספקים, הגדרת OAuth, דפדוף בין עמודים, מנגנוני ניסיון חוזר, העברות שניתן לחדש, בקרות מקביליות, פקודות מצאי ופקודות אימות. לכן המעטפת יכולה להתמקד בעקרונות הקבועים של ההעברה: פקודות העתקה בלבד, אזור ביניים מוגבל, עתודות קיבולת, רשימות קבצים דטרמיניסטיות והתקדמות שנשמרת לאורך זמן.
אין פירוש הדבר שהמשימה אוטומטית. המפעיל עדיין אחראי להגדרת השירותים המרוחקים, לאבטחת האסימונים, לזמינות הרשת, לפיקוח על התהליך, לכונן המקומי, ליומנים, למגבלות הספקים, לבדיקת פריטים שנכשלו ולאישור היעד. FileArk נועד למשתמשים שרוצים שההליך הזה יופעל כתהליך עבודה מקוון ומנוהל, במקום בתחנת העבודה או בשרת שלהם.
הסקריפט לעולם אינו מפעיל במפורש את rclone move, sync, delete, purge או rmdirs. הוא משתמש ב-lsf וב-about לגילוי, ב-copy לכל מקטע וב-check --download לאימות מלא של כל הבתים. ההסרה היחידה היא של קובץ מאומת מתיקיית הביניים המקומית.
הורדת גרסת Bash ורישיון MIT
הורדת תוכנית ההעברה ב-Bash וב-rclone
מעטפת להעתקה בלבד, עם מגבלות אצווה, עתודות מקומיות וביעד, אימות מלא של כל הבתים, נקודות ביקורת, בקרות לניסיונות חוזרים והדגמה שאינה זקוקה לרשת.fileark-cloud-transfer.sh · Bash 4+ · rclone · jq · רישיון MIT
הורידו את רישיון MIT
הודעת הרשאה החלה על שני הסקריפטים של FileArk להעברה ידנית.LICENSE-fileark-cloud-transfer.txt · MIT · טקסט פשוט
הריצו את הדגמת המפעיל ללא חיבור לרשת

אפשר להריץ את ההדגמה בבטחה עוד לפני התקנת rclone או jq, מפני שניתוח הארגומנטים מסתיים לפני בדיקות התלויות. הפלט מציין את הפעולות ההרסניות האסורות, מציג את שתי עתודות הקיבולת ומסתיים במספר המחיקות מהמקור.
chmod +x fileark-cloud-transfer.sh
bash -n fileark-cloud-transfer.sh
./fileark-cloud-transfer.sh --demo
./fileark-cloud-transfer.sh --helpהתקינו והגדירו את יחסי התלות הנדרשים למפעיל
התקינו גרסה עדכנית של rclone לפי ההוראות הרשמיות שלו, והתקינו את jq באמצעות מנהל החבילות של מערכת ההפעלה. נדרש Bash 4 ומעלה, משום שסקריפט המעטפת משתמש בטיפול מחמיר בשגיאות ובביטויים מותנים מודרניים.
הריצו rclone config וצרו שני שירותים מרוחקים בעלי שמות נפרדים, לדוגמה onedrive: ו-gdrive:. הזינו מזהה לקוח וסוד משלכם עבור הספק כאשר המדיניות או מגבלות הקצב מחייבות יישומי OAuth ייעודיים. rclone שומר אסימוני OAuth בקובץ ההגדרות שלו; הגנו על הקובץ באמצעות הרשאות מצומצמות ולעולם אל תצרפו אותו לסקריפט.
לפני הפעלת המעטפת, אשרו כל שירות מרוחק באמצעות פקודת הצגה לקריאה בלבד ופקודת מכסה. השתמשו בנתיבים כגון onedrive:Department/Archive כאשר רק תת-עץ מסוים נכלל בהעברה.
rclone version
rclone config
rclone lsd onedrive:
rclone lsd gdrive:
rclone about onedrive: --json | jq
rclone about gdrive: --json | jqהקפאת מצאי דטרמיניסטי לפני העברת הבתים
המעטפת משתמשת ב-rclone lsf באופן רקורסיבי, עם טאב כמפריד מפורש ובפורמט sp, וכך מפיקה גודל ולאחריו נתיב. היא מוודאת שכל גודל הוא מספר ושכל נתיב הוא יחסי, ולאחר מכן מחריגה נתיבים שכבר נמצאים בנקודת הביקורת המאומתת.
גרסת Bash דוחה שמות קבצים המכילים טאבים, החזרות גרר או ירידות שורה, מפני שרשימות --files-from-raw המופרדות בירידות שורה אינן יכולות לייצג אותם ללא עמימות. כאשר קיימים שמות כאלה, השתמשו בגרסת Python או בפורמט מצאי ייעודי.
נקודת ביקורת המבוססת על נתיבים היא פשוטה וקלה לבדיקה במכוון. היא מניחה שנתיבי המקור נשארים יציבים במהלך ההרצה. אם אפשר, הקפיאו כתיבה למקור; אם צפויים שינויים במקביל, הפיקו מחדש את המצאי ובצעו התאמה.
rclone lsf "$SOURCE" \
--recursive \
--files-only \
--format "sp" \
--separator