מעבר מ-gsutil לאחסון gcloud

‫Google Cloud CLI הוא כלי שורת הפקודה המומלץ לאינטראקציה עם Cloud Storage. בדף הזה מוסבר איך לעבור מ-gsutil לפקודות gcloud storage של ה-CLI של gcloud, ומתוארים ההבדלים העיקריים ומיפוי הפקודות בין שני הכלים. אם יש לכם סקריפטים שמשתמשים ב-gsutil, אתם יכולים להשתמש במידע שבדף הזה כדי לעדכן את הסקריפטים באמצעות הפקודות המקבילות של gcloud storage.

במאמר התקנת Google Cloud CLI מוסבר איך מתחילים להשתמש ב-CLI של gcloud.

לתיאור מפורט של פקודות gcloud storage, עיינו במאמרי העזרה של gcloud storage.

הבדלים בהתנהגות

בקטעים הבאים מתוארים ההבדלים בהתנהגות בין gsutil לבין gcloud storage.

הפעלות במקביל

‫gcloud storage לא תומך בהפעלות מקבילות באמצעות כמה מסופים באותו מכשיר.

העברות מקבילות

‫gcloud storage תומך בהעברות מקבילות.

טיפול בתווים כלליים לחיפוש

gcloud storage מפשט כמה כוכביות. אם משתמשים בשלוש כוכביות או יותר ברצף (***), המערכת מתייחסת אליהן ככוכבית אחת (*).

טיפול בקטגוריות עם מרחב שמות היררכי

אפשר להשתמש ב-gcloud storage כדי ליצור ולנהל קטגוריות שמופעל בהן מרחב שמות היררכי.

תמיכה בהעתקת קבצים מקומיים לקבצים מקומיים אחרים

הכלי gcloud storage מיועד רק לאינטראקציה עם Cloud Storage, ואי אפשר להשתמש בו כדי להעתיק קבצים בין מיקומים מקומיים. כדי להעביר נתונים בהצלחה באמצעות gcloud storage, לפחות ארגומנט אחד (מקור או יעד) חייב להיות URI של משאב ב-Cloud Storage. לדוגמה: gs://my-bucket.

עיצוב הפלט

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

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

פקודות gcloud מקבילות

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

פעולה פקודת gsutil פקודת gcloud storage
ניהול רשימות של בקרת גישה (ACL)
gsutil acl get
gsutil acl set
gsutil acl ch
gcloud storage RESOURCE describe --format="multi(acl:format=json)"
gcloud storage RESOURCE update --acl-file=ACL_FILE_PATH
gcloud storage RESOURCE update --add-acl-grant=GRANT
gcloud storage RESOURCE update --remove-acl-grant=GRANT
פעולה פקודת gsutil פקודת gcloud storage
שרשור אובייקטים והצגת תוכן של אובייקטים
gsutil cat
gcloud storage cat
פעולה פקודת gsutil פקודת gcloud storage
שרשור אובייקטים על ידי שילוב שלהם באובייקט חדש
gsutil compose
gcloud storage objects compose
הערות
כדי להחיל תנאים מוקדמים ב-gcloud storage objects compose, משתמשים בדגלים ספציפיים, כמו --if-generation-match או --if-metageneration-match.
פעולה פקודת gsutil פקודת gcloud storage
העתקת אובייקטים ומשאבים אחרים
gsutil cp
gcloud storage cp
הערות

תיקיות מדומות שנוצרו באמצעות מסוף Google Cloud מזוהות כאובייקטים של placeholder בגודל 0 בייטים. אפשר להשתמש ב-gcloud storage cp כדי להעתיק תיקיות מדומות, אבל אי אפשר להשתמש ב-gsutil cp.

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

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

פעולה פקודת gsutil פקודת gcloud storage
הצגת נפח האחסון הכולל בכונן שבו משתמשים האובייקטים
gsutil du
gcloud storage du
פעולה פקודת gsutil פקודת gcloud storage
חישוב גיבובים (hashes) של קבצים
gsutil hash
gcloud storage hash
הערות

הכלי gsutil hash משתמש בדגלים מצטברים כדי לכלול ערכי גיבוב (hash) ספציפיים, כמו -c או -m. ‫gcloud storage hash משתמש בדגלים של חיסור כדי להחריג גיבובים, כמו --skip-md5 או --skip-crc32c.

פעולה פקודת gsutil פקודת gcloud storage
ניהול תוויות של קטגוריה
gsutil label get
gsutil label set
gsutil label ch
gcloud storage buckets describe
gcloud storage buckets update
gcloud storage buckets update
הערות

השילוב של הוספה, עדכון והסרה של תוויות בפקודה אחת של gsutil label ch יכול להתנהג בצורה שונה מהפעולות המקבילות באמצעות gcloud storage buckets update. אחרי המעבר ל-gcloud storage, צריך לבדוק בקפידה סקריפטים שמסתמכים על התנהגות ספציפית של קריאה-שינוי-כתיבה ב-gsutil.

פעולה פקודת gsutil פקודת gcloud storage
הצגת רשימה של קטגוריות, אובייקטים ותיקיות
gsutil ls
gcloud storage ls
הערות

כשמשתמשים בתו כללי לחיפוש כדי להציג רשימה של אובייקטים בפרויקט, הפקודה gsutil ls מחזירה רשימה שטוחה של אובייקטים, ואילו הפקודה gcloud storage ls מחזירה אובייקטים שמקובצים לפי שם הקטגוריה.

כשמשתמשים ב-gcloud storage ls -L כדי להחזיר רשימות מפורטות כפלט, חלים הכללים הבאים:

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

הפונקציה gcloud storage תמיד מפיקה תאריכים ושעות לפי שעון UTC.

אם יש הודעות שגיאה, gcloud storage מחזיר אותן בסוף הפלט של הפקודה.

פעולה פקודת gsutil פקודת gcloud storage
העברה ושינוי שם של אובייקטים או ספריות
gsutil mv
gcloud storage mv
פעולה פקודת gsutil פקודת gcloud storage
כתיבה מחדש של אובייקטים במקום
gsutil rewrite
gcloud storage objects update
הערות

אם מוגדר encryption_key בקובץ התצורה boto, ‏gsutil rewrite -k מחיל את המפתח על האובייקטים. אם לא מגדירים את encryption_key, הערך המקביל של gsutil rewrite -k הוא gcloud storage objects update --clear-encryption-key. הפעולה הזו מסירה מהאובייקט את כל מפתחות ההצפנה באספקת הלקוח (CSEK) או מפתחות ההצפנה בניהול הלקוח (CMEK). לאחר מכן האובייקט מוצפן באמצעות מפתח ברירת המחדל של הקטגוריה ב-KMS או באמצעות הצפנה בניהול Google.

‫gsutil rewrite כולל לוגיקה שמאפשרת לדלג על שכתוב של אובייקט אם הטרנספורמציה המבוקשת לא תשנה את המצב שלו (לדוגמה, אם האובייקט כבר נמצא בסוג האחסון המטורגט). יכול להיות ש-gcloud storage objects update לא יבצע את אותן בדיקות, מה שעלול להוביל לפעולות מיותרות.

פעולה פקודת gsutil פקודת gcloud storage
הסרת אובייקטים או קטגוריות
gsutil rm
gcloud storage rm
הערות

אין תמיכה בכינויים del,‏ delete ו-remove של gsutil.

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

פעולה פקודת gsutil פקודת gcloud storage
סנכרון התוכן של שתי קטגוריות או ספריות
gsutil rsync
gcloud storage rsync
הערות

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

כדי לשפר את הביצועים, gcloud storage rsync מבצע פעולות במקביל כברירת מחדל. הפקודה gsutil rsync פועלת באופן רציף, אלא אם משתמשים בדגל -m ברמה העליונה.

כברירת מחדל, gsutil rsync עוקב אחרי קישורים סמליים. כברירת מחדל, gcloud storage rsync מתעלם מהם, אלא אם משתמשים בדגל --no-ignore-symlinks.

פעולה פקודת gsutil פקודת gcloud storage
הגדרת מטא-נתונים באובייקטים שהועלו
gsutil setmeta
gcloud storage objects update
הערות

ב-gsutil setmeta משתמשים בדגל -h יחיד שניתן לחזור עליו כדי לציין אילו מטא-נתונים להגדיר או להסיר. ב-gcloud storage objects update יש דגלים נפרדים לכל שדה של מטא-נתונים (לדוגמה: --content-type,‏ --clear-cache-control או --update-custom-metadata).

ב-gsutil setmeta, הדגל -h משמש להגדרת שם הכותרת המלא (לדוגמה: -h "x-goog-meta-icecreamflavor:vanilla"). ב-gcloud storage objects update, הדגל --update-custom-metadata משמש במקום זאת ומקבל צמדי מפתח/ערך (לדוגמה: --update-custom-metadata=icecreamflavor=vanilla). כדי להסיר שדה מטא-נתונים מותאם אישית, ב-gsutil setmeta משתמשים ב--h "x-goog-meta-icecreamflavor" וב-gcloud storage objects update משתמשים ב---remove-custom-metadata=icecreamflavor.

פעולה פקודת gsutil פקודת gcloud storage
הצגת סטטוס האובייקט
gsutil stat
gcloud storage objects list --stat --fetch-encrypted-object-hashes
הערות

פורמט הפלט של gcloud storage objects list --stat שונה מפורמט הפלט של gsutil stat, ויש בעיות מוכרות שקשורות לריווח לא עקבי. יכול להיות שסקריפטים שנכתבו כדי לנתח את הפלט של gsutil stat יצטרכו התאמות כדי לטפל בפורמט הפלט של gcloud storage objects list --stat.

המאמרים הבאים

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