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

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

כדי ללמוד איך להתקין ולהתחיל להשתמש ב-CLI של gcloud, ראו התקנת Google Cloud CLI.

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

בקטעים הבאים מפורטים ההבדלים בהתנהגות בין 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
חישוב גיבוב (hash) של קבצים
gsutil hash
gcloud storage hash
הערות

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

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

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

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

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

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

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.