מעבר מ-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 משתמש בדגלי חיסור כדי להחריג גיבובים (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‏ ( 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.