نسخ البيانات من Google Cloud Storage إلى Azure Storage باستخدام AzCopy

AzCopy هو أداة سطر الأوامر التي يمكنك استخدامها لنسخ كائنات ثنائية كبيرة الحجم أو ملفات إلى أو من حساب تخزين. تساعدك هذه المقالة على نسخ العناصر والدلائل والمستودعات من Google Cloud Storage إلى Azure Blob Storage باستخدام AzCopy.

اختر كيفية تقديم بيانات اعتماد التصريح

  • للتخويل باستخدام Azure Storage، استخدم معرف Microsoft Entra أو رمز توقيع الوصول المشترك (SAS).

  • للتفويض باستخدام Google Cloud Storage، استخدم مفتاح حساب خدمة.

التصريح بواسطة Azure Storage

راجع مقالة بدء استخدام AzCopy لتنزيل AzCopy والتعرف على الطرق التي يمكنك من خلالها توفير بيانات اعتماد التخويل لخدمة التخزين.

إشعار

تفترض الأمثلة الواردة في هذه المقالة أنك قدمت بيانات اعتماد التخويل باستخدام معرف Microsoft Entra.

إذا كنت تفضل استخدام رمز SAS المميز لتخويل الوصول إلى بيانات كائن ثنائي كبير الحجم، فإنه يمكنك إلحاق هذا الرمز المميز بعنوان URL للمورد في كل أمر AzCopy. على سبيل المثال: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

التخويل باستخدام Google Cloud Storage

للتخويل باستخدام Google Cloud Storage، ستستخدم مفتاح حساب خدمة. للحصول على معلومات حول كيفية إنشاء مفتاح حساب خدمة، راجع إنشاء مفاتيح حساب الخدمة وإدارتها.

بعد الحصول على مفتاح خدمة، قم بتعيين GOOGLE_APPLICATION_CREDENTIALS متغير البيئة إلى المسار المطلق إلى ملف مفتاح حساب الخدمة:

نظام التشغيل الأمر
Windows set GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key>
Linux export GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key>
ماك export GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key>

نسخ الكائنات والدلائل والحاويات

يستخدم AzCopy واجهة برمجة تطبيقات Put Block From URL ، لذلك يتم نسخ البيانات مباشرة بين Google Cloud Storage وخوادم التخزين. لا تستخدم عمليات النسخ هذه النطاق الترددي للشبكة لجهاز الكمبيوتر الخاص بك.

تلميح

تتضمن الأمثلة الواردة في هذا القسم وسيطات المسار مع علامات اقتباس مفردة («»). استخدم علامات الاقتباس المفردة في كافة أغلفة الأوامر باستثناء shell الأوامر Windows (cmd.exe). في حالة استخدامك Windows Command Shell (cmd.exe)، فقم بإحاطة وسيطات المسار بعلامات اقتباس مزدوجة ("") بدلًا من علامات الاقتباس المفردة ('').

تعمل هذه الأمثلة أيضًا مع الحسابات التي تحتوي على مساحة اسماء هرمية. يمكنك الوصول متعدد البروتوكولات على Data Lake Storage من استخدام نفس بناء جملة URL (blob.core.windows.net) على تلك الحسابات.

نسخ عنصر

استخدم نفس بناء جملة URL (blob.core.windows.net) للحسابات التي تحتوي على مساحة اسم هرمية.

بناء الجمله

azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'

مثال

azcopy copy 'https://storage.cloud.google.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'

نسخ دليل

استخدم نفس بناء جملة URL (blob.core.windows.net) للحسابات التي تحتوي على مساحة اسم هرمية.

بناء الجمله

azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

مثال

azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

إشعار

يقوم هذا المثال بإلحاق العلامة --recursive لنسخ الملفات في كافة الدلائل الفرعية.

نسخ محتويات دليل

يمكنك نسخ محتويات دليل دون نسخ الدليل المحتوي نفسه باستخدام رمز حرف البدل (*).

بناء الجمله

azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

مثال

azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

نسخ مستودع Cloud Storage

استخدم نفس بناء جملة URL (blob.core.windows.net) للحسابات التي تحتوي على مساحة اسم هرمية.

بناء الجمله

azcopy copy 'https://storage.cloud.google.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

مثال

azcopy copy 'https://storage.cloud.google.com/mybucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

نسخ جميع المستودعات في مشروع Google Cloud

أولا، قم بتعيين GOOGLE_CLOUD_PROJECT إلى معرف المشروع لمشروع Google Cloud.

استخدم نفس بناء جملة URL (blob.core.windows.net) للحسابات التي تحتوي على مساحة اسم هرمية.

بناء الجمله

azcopy copy 'https://storage.cloud.google.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

مثال

azcopy copy 'https://storage.cloud.google.com/' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

نسخ مجموعة فرعية من المستودعات في مشروع Google Cloud

أولا، قم بتعيين GOOGLE_CLOUD_PROJECT إلى معرف المشروع لمشروع Google Cloud.

انسخ مجموعة فرعية من الحاويات باستخدام رمز حرف بدل (*) في اسم المستودع. استخدم نفس بناء جملة URL (blob.core.windows.net) للحسابات التي تحتوي على مساحة اسم هرمية.

بناء الجمله

azcopy copy 'https://storage.cloud.google.com/<bucket*name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

مثال

azcopy copy 'https://storage.cloud.google.com/my*bucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

التعامل مع الاختلافات في قواعد تسمية المستودع

يحتوي Google Cloud Storage على مجموعة مختلفة من اصطلاحات التسمية لأسماء الحاويات مقارنة بحاويات كائن Azure الثنائي كبير الحجم. يمكنك القراءة عنها هنا. إذا اخترت نسخ مجموعة من الحاويات إلى حساب تخزين Azure، فقد تفشل عملية النسخ بسبب الاختلافات في التسمية.

يعالج AzCopy ثلاثًا من المشكلات الأكثر شيوعًا التي يمكن أن تنشأ. المستودعات التي تحتوي على نقاط، والمستودعات التي تحتوي على واصلات متتالية، والمستودعات التي تحتوي على تسطير سفلي. يمكن أن تحتوي أسماء مستودعات Google Cloud Storage على نقاط وواصلات متتالية، ولكن لا يمكن لحاوية في Azure ذلك. يستبدل AzCopy الفترات بواصلات وواصلات متتالية برقم يمثل عدد الواصلات المتتالية (على سبيل المثال: يصبح my-4-bucketالمستودع المسمى my----bucket . إذا كان اسم المستودع يحتوي على تسطير أسفل السطر (_)، فإن AzCopy يستبدل التسطير السفلي بواصلة. على سبيل المثال، يصبح المستودع المسمى my_bucketmy-bucket.

التعامل مع الاختلافات في قواعد تسمية العناصر

يحتوي Google Cloud Storage على مجموعة مختلفة من اصطلاحات التسمية لأسماء الكائنات مقارنة بنقط Azure. يمكنك القراءة عنها هنا.

لا يسمح Azure Storage بأن تنتهي أسماء الكائنات (أو أي مقطع في مسار الدليل الظاهري) بنقاط زائدة (على سبيل المثال my-bucket...). يتم قطع النقاط الزائدة عند تنفيذ عملية النسخ.

التعامل مع الاختلافات في بيانات تعريف العنصر

يسمح كل من Google Cloud Storage وAzure بمجموعات مختلفة من الأحرف في أسماء مفاتيح العناصر. يمكنك القراءة عن بيانات التعريف في Google Cloud Storage هنا. على جانب Azure، تلتزم مفاتيح كائن الكائن الثنائي كبير الحجم بقواعد التسمية لمعرفات C#‎.

كجزء من أمر AzCopy copy ، يمكنك توفير قيمة للعلامة الاختيارية s2s-handle-invalid-metadata التي تحدد كيفية معالجة الملفات حيث تحتوي بيانات التعريف للملف على أسماء مفاتيح غير متوافقة. يصف الجدول التالي كل قيمة علامة.

القيمة الخاصة بالعلامة ‏‏الوصف
ExcludeIfInvalid (خيار افتراضي) لا يتم تضمين بيانات التعريف في العنصر المنقول. AzCopy يسجل تحذيرًا.
FailIfInvalid لا يتم نسخ العناصر. يسجل AzCopy خطأ ويتضمن هذا الخطأ في العدد الفاشل الذي يظهر في ملخص النقل.
إعادة تسميةIfInvalid يعمل AzCopy على حل مفتاح بيانات التعريف غير الصالح، وينسخ الكائن إلى Azure باستخدام زوج قيمة مفتاح بيانات التعريف الذي تم حله. لمعرفة الخطوات التي يتخذها AzCopy لإعادة تسمية مفاتيح الكائنات بالضبط، راجع قسم كيفية إعادة تسمية AzCopy لمفاتيح الكائنات أدناه. إذا تعذر على AzCopy إعادة تسمية المفتاح، فلن يتم نسخ العناصر.

كيف يقوم AzCopy بإعادة تسمية مفاتيح العناصر

يقوم AzCopy بتنفيذ الخطوات التالية:

  1. يستبدل الأحرف غير الصالحة بـ «_».

  2. إضافة السلسلة rename_ إلى بداية مفتاح صالح جديد.

    سيتم استخدام هذا المفتاح لحفظ قيمة بيانات التعريف الأصلية.

  3. إضافة السلسلة rename_key_ إلى بداية مفتاح صالح جديد. سيتم استخدام هذا المفتاح لحفظ مفتاح غير صالح لبيانات التعريف الأصلية. يمكنك استخدام هذا المفتاح لمحاولة استرداد بيانات التعريف في جانب Azure نظرا لأنه يتم الاحتفاظ بمفتاح بيانات التعريف كقيمة على خدمة تخزين كائن ثنائي كبير الحجم.

الخطوات التالية

يمكنك العثور على مزيد من الأمثلة في هذه المقالات:

راجع هذه المقالات لتكوين الإعدادات وتحسين الأداء واستكشاف المشكلات وإصلاحها: