نسخ البيانات من Amazon S3 إلى "تخزين Azure" باستخدام AzCopy

AzCopy هو أداة سطر الأوامر التي يمكنك استخدامها لنسخ كائنات ثنائية كبيرة الحجم أو ملفات إلى أو من حساب تخزين. تساعدك هذه المقالة على نسخ العناصر والدلائل والحاويات من Amazon Web Services (AWS) S3 إلى Azure Blob Storage باستخدام AzCopy.

إشعار

يدعم AzCopy عناوين URL القياسية ذات النمط الظاهري المستضاف أو على غرار المسار المحددة بواسطة AWS. على سبيل المثال: https://bucket.s3.amazonaws.com أو https://s3.amazonaws.com/bucket.

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

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

  • للتصريح باستخدام AWS S 3، استخدم مفتاح الوصول إلى AWS ‏ ومفتاح الوصول السري.

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

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

إشعار

تفترض الأمثلة الواردة في هذه المقالة أنك قمت بمصادقة هويتك باستخدام AzCopy login الأمر . ثم يستخدم AzCopy حساب Microsoft Entra الخاص بك لتخويل الوصول إلى البيانات في تخزين Blob.

إذا كنت تفضل استخدام رمز SAS المميز لتخويل الوصول إلى بيانات كائن ثنائي كبير الحجم، فإنه يمكنك إلحاق هذا الرمز المميز بعنوان URL للمورد في كل أمر AzCopy.

على سبيل المثال: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>.

التصريح باستخدام AWS S 3

اجمع مفتاح الوصول إلى AWS ومفتاح الوصول السري، ثم عيِّن هذه المتغيرات البيئية:

نظام التشغيل الأمر
Windows Powershell:$env:AWS_ACCESS_KEY_ID=<access-key>
$env:AWS_SECRET_ACCESS_KEY=<secret-access-key>
في موجه الأوامر استخدم: set AWS_ACCESS_KEY_ID=<access-key>
set AWS_SECRET_ACCESS_KEY=<secret-access-key>
Linux export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>
ماك export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>

يتم استخدام بيانات الاعتماد هذه لإنشاء عناوين URL موقعة مسبقا تستخدم لنسخ الكائنات.

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

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

تلميح

تتضمن الأمثلة الواردة في هذا القسم وسيطات المسار مع علامات اقتباس مفردة («»). استخدم علامات الاقتباس المفردة في كافة أغلفة الأوامر باستثناء 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://s3.amazonaws.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'

مثال

azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'

إشعار

تستخدم الأمثلة في هذه المقالة عناوين URL على نمط المسار لمستودعات AWS S3 (على سبيل المثال: http://s3.amazonaws.com/<bucket-name>).

يمكنك أيضا استخدام عناوين URL الظاهرية المستضافة أيضا (على سبيل المثال: http://bucket.s3.amazonaws.com).

لمعرفة المزيد حول الاستضافة الظاهرية للمستودعات، راجع الاستضافة الظاهرية للمستودعات.

نسخ دليل

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

بناء الجمله

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

مثال

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

إشعار

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

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

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

بناء الجمله

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

مثال

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

نسخ حاوية

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

بناء الجمله

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

مثال

azcopy copy 'https://s3.amazonaws.com/mybucket' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive=true

نسخ جميع الحاويات في جميع المناطق

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

بناء الجمله

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

مثال

azcopy copy 'https://s3.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

انسخ جميع الحاويات في منطقة S 3 محددة

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

بناء الجمله

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

مثال

azcopy copy 'https://s3-rds.eu-north-1.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

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

يحتوي AWS S 3 على مجموعة مختلفة من اتفاقيات التسمية لأسماء الحاويات مقارنةً بحاويات Azure blob. يمكنك القراءة عنها هنا. إذا اخترت نسخ مجموعة من الحاويات إلى حساب تخزين Azure، فقد تفشل عملية النسخ بسبب الاختلافات في التسمية.

تتعامل AzCopy مع اثنتين من أكثر المشكلات شيوعًا التي يمكن أن تنشأ؛ الحاويات التي تحتوي على فترات وحاويات تحتوي على الوصلات المتتالية. يمكن أن تحتوي أسماء حاوية AWS S 3 على فترات ووصلات متتالية، ولكن لا يمكن لحاوية في Azure. يستبدل AzCopy الفترات بواصلات وواصلات متتالية برقم يمثل عدد الواصلات المتتالية (على سبيل المثال: يصبح my-4-bucketالمستودع المسمى my----bucket .

أيضًا، عند نسخ AzCopy على الملفات، فإنه يتحقق من وجود اصطدامات في التسمية ويحاول حلها. على سبيل المثال، إذا كانت هناك مستودعات بالاسم bucket-name و bucket.name، يحل AzCopy مستودعا يسمى bucket.name أولا إلى bucket-name ثم إلى bucket-name-2.

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

يسمح AWS S 3 وAzure بمجموعات مختلفة من الأحرف في أسماء مفاتيح العناصر. يمكنك قراءة الأحرف التي يستخدمها AWS S3 هنا. على جانب 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 نظرا لأنه يتم الاحتفاظ بمفتاح بيانات التعريف كقيمة على خدمة تخزين كائن ثنائي كبير الحجم.

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

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

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