ספריית Shim להרצת gcloud storage
סקירה כללית
Cloud SDK כולל ממשק CLI חדש, gcloud storage, שיכול לפעול מהר יותר באופן משמעותי מ-gsutil כשמבצעים העלאות והורדות, וצריך פחות התאמה של פרמטרים. ל-CLI החדש יש תחביר ומבנה פקודות שמוכרים למשתמשי gsutil, אבל הוא שונה במהותו בדרכים חשובות רבות. כדי להקל את המעבר ל-CLI החדש, gsutil מספק ספריית Shim שמתרגמת את פקודות gsutil לפקודות gcloud storage אם קיימת פקודה מקבילה, ועוברת חזרה להתנהגות הרגילה של gsutil אם אין פקודה מקבילה.
הפעלה
מגדירים את use_gcloud_storage=True בקובץ התצורה .boto, בקטע [GSUtil]:
[GSUtil] use_gcloud_storage=True
אפשר גם להגדיר את הדגל לפקודות בודדות באמצעות הדגל -o ברמה העליונה:
gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj
הפקודות הזמינות
ממשק ה-CLI של gcloud storage תומך רק בקבוצת משנה של פקודות gsutil. הרשימה הבאה מציגה פקודות שנתמכות על ידי ספריית ה-Shim, ומתארת את ההבדלים בהתנהגות, אם קיימים.
acl
אין תמיכה בפקודת המשנה
ch.
autoclass
פועלת כמצופה.
bucketpolicyonly
פועלת כמצופה.
cat
מדפיסה נתונים של אובייקט שני, גם אם האובייקט הראשון לא תקין.
compose
פועלת כמצופה.
cors
פקודת המשנה
getמדפיסה "[]" במקום "gs://[bucket name] has no CORS configuration".
cp
מעתיקה אובייקט שני גם אם האובייקט הראשון לא תקין.
לא תומכת בעותקים מקובץ לקובץ.
תומכת בהעתקת אובייקטים מענן לענן עם קווים נטויים בסוף השם.
הדגל של כל הגרסאות (
-A) מאפשר הפעלה רציפה באופן עצמאי במקום להציג שגיאה.
defacl
אין תמיכה בפקודת המשנה
ch.
defstorageclass
פועלת כמצופה.
hash
לאובייקטים בענן, המערכת ב-gsutil מתעלמת מהדגלים
-mו--cשמשפיעים על אילו גיבובים מוצגים. ההתנהגות הזו קבועה לספריית shim ולאחסון gcloud.
iam
אין תמיכה בפקודת המשנה
ch.הדגל
-fימשיך בכל שגיאה, ולא רק בשגיאות API.
kms
פקודת המשנה להרשאה מחזירה הודעות אינפורמטיביות בפורמט שונה.
פקודת המשנה להצפנה מחזירה הודעות אינפורמטיביות בפורמט שונה.
labels
פקודת המשנה
getמדפיסה "[]" במקום "gs://[bucket name] has no labels configuration".
lifecycle
פועלת כמצופה.
logging
לפקודת המשנה get יש ריווח שונה של JSON, והיא לא מדפיסה הודעה אינפורמטיבית אם לא נמצאו הגדרות.
ls
פועלת כמצופה.
mb
פועלת כמצופה.
mv
ראו את ההערות לגבי הפקודה cp.
notification
פקודת המשנה list מדפיסה את פרטי ההגדרות כ-YAML.
פקודת המשנה delete מאפשרת מעקב אחרי ההתקדמות ופעולות מקבילות.
pap
פועלת כמצופה.
rb
פועלת כמצופה.
requesterpays
פועלת כמצופה.
rewrite
הדגל k- לא יקפיץ הודעת שגיאה אם נשלחת אליו קריאה ללא מפתח חדש. המפתח הישן נשמר גם כשעובדים עם ספריית shim וגם כשלא עובדים איתה.
rm
אין תמיכה בסמנים של מחיקה מסוג
$folder$.
rpo
פועלת כמצופה.
setmeta
לא תקפיץ הודעת שגיאה אם לא היו שינויים בכותרות.
stat
כוללת שדה 'Storage class update time:' שעשוי להשפיע על הפורמט של הפלט.
ubla
פועלת כמצופה.
versioning
פועלת כמצופה.
web
לפקודת המשנה get יש ריווח שונה של JSON, והיא לא מדפיסה הודעה אינפורמטיבית אם לא נמצאו הגדרות.
ההגדרות של קובץ boto
ההגדרות בקובץ boto ממופות ביחס של 1:1 למשתני הסביבה של gcloud, במקרים הרלוונטיים.
[Credentials]
aws_access_key_id: AWS_ACCESS_KEY_ID
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
use_client_certificate: CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE
[Boto]
proxy: CLOUDSDK_PROXY_ADDRESS
proxy_type: CLOUDSDK_PROXY_TYPE
proxy_port: CLOUDSDK_PROXY_PORT
proxy_user: CLOUDSDK_PROXY_USERNAME
proxy_pass: CLOUDSDK_PROXY_PASSWORD
proxy_rdns: CLOUDSDK_PROXY_RDNS
http_socket_timeout: CLOUDSDK_CORE_HTTP_TIMEOUT
ca_certificates_file: CLOUDSDK_CORE_CUSTOM_CA_CERTS_FILE
max_retry_delay: CLOUDSDK_STORAGE_BASE_RETRY_DELAY
num_retries: CLOUDSDK_STORAGE_MAX_RETRIES
[GSUtil]
check_hashes: CLOUDSDK_STORAGE_CHECK_HASHES
default_project_id: CLOUDSDK_CORE_PROJECT
disable_analytics_prompt: CLOUDSDK_CORE_DISABLE_USAGE_REPORTING
use_magicfile: CLOUDSDK_STORAGE_USE_MAGICFILE
parallel_composite_upload_threshold: CLOUDSDK_STORAGE_PARALLEL_COMPOSITE_UPLOAD_THRESHOLD
resumable_threshold: CLOUDSDK_STORAGE_RESUMABLE_THRESHOLD
[OAuth2]
client_id: CLOUDSDK_AUTH_CLIENT_ID
client_secret: CLOUDSDK_AUTH_CLIENT_SECRET
provider_authorization_uri: CLOUDSDK_AUTH_AUTH_HOST
provider_token_uri: CLOUDSDK_AUTH_TOKEN_HOST
הערות כלליות על תאימות
בגלל התאימות בכל הפלטפורמות העיקריות, אפשרות ריבוי עיבודים מופעלת בכל הפקודות כברירת מחדל (מקבילה לאפשרות 'm-' שתמיד כלולה ב-gsutil).
רצף של יותר מ-2 כוכביות (למשל
***) תמיד נחשב לכוכבית יחידה.שלא כמו gsutil, gcloud לא מיועד לשימוש בהפעלות מקבילות, ולכן פעולה כזו (כלומר הפעלת ה-shim מ-2 טרמינלים בו-זמנית) עלולה לגרום להתנהגות בלתי צפויה.
בהנחה שקטגוריה מכילה אובייקט
gs://bucket/nested/foo.txt, האיטרטור של התו הכללי לחיפוש ב-gsutil יהיה תואם ל-foo.txtבמקרה של כתובת URL כמוgs://bucket/*/nested/*. ב-shim לא תהיה התאמה ל-foo.txtעם אותה כתובת URL.המידע יתעדכן ככל שתהיה תמיכה בפקודות חדשות גם ב-gcloud storage וגם בספריית shim.
אם יש בעיות ב-Unicode, נסו להגדיר את משתנה הסביבה
PYTHONUTF8לערך1. באופן ספציפי, זה יכול לעזור בשורת הפקודה (CMD) של Windows.