מעבר מ-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 מזוהות כאובייקטים של פלייסהולדרים בגודל 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. סקריפטים שמסתמכים על התנהגות ספציפית של קריאה-שינוי-כתיבה של gsutil צריכים להיבדק בקפידה אחרי המעבר ל-gcloud storage.

פעולה פקודת 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.