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

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

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

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

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

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

ב-gcloud storage אין תמיכה בהרצה של כמה מופעים של ה-CLI מכמה מסופים שונים בו-זמנית.

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

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.

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 כדי שהם יוכלו לטפל בפורמט הפלט החדש.

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

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