نسخ البيانات من Amazon S 3 إلى Azure Storage باستخدام AzCopy

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

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

  • للترخيص باستخدام Azure Storage، استخدم Azure Active Directory (AD) أو رمز الوصول المشترك المميز (SAS).

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

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

راجع مقالة ⁧⁩ابدأ بمقالة⁧⁩ AzCopy لتنزيل AzCopy، واختر كيفية تقديم بيانات اعتماد التصريح لخدمة التخزين.

ملاحظة

تفترض الأمثلة الواردة في هذه المقالة أنك قد صرحت عن هويتك باستخدام الأمر ⁧AzCopy login⁩. ثم يستخدم AzCopy حساب Azure AD خاصتك للسماح بالوصول إلى البيانات في تخزين كائن ثنائي كبير الحجم.

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

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

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

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

نظام التشغيل الأمر
Windows 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>
macOS export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>

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

يستخدم AzCopy ⁧⁩ كتلة مكوِّنة من عنوان URL⁧⁩ API، لذلك تُنسخ البيانات مباشرة بين AWS S 3 وخوادم التخزين. لا تستخدم عمليات النسخ هذه النطاق الترددي للشبكة الخاص بالكمبيوتر خاصتك.

تلميح

تشمل الأمثلة الواردة في هذا القسم وسيطات المسار مع اقتباسات مفردة (" "). استخدم علامات مفردة في كافة هياكل الأوامر باستثناء Windows Command Shell (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 S 3 (على سبيل المثال: ⁧http://s3.amazonaws.com/<bucket-name>⁩).

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

لمعرفة المزيد عن Hosting افتراضي للحاويات، راجع ⁧⁩الاستضافة الافتراضية للحاويات⁧⁩.

نسخ دليل

استخدم بنية عنوان 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----bucket⁩ ⁧my-4-bucket⁩.

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

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

يسمح AWS S 3 وAzure بمجموعات مختلفة من الأحرف في أسماء مفاتيح العناصر. يمكنك القراءة عن الشخصيات التي يستخدمها AWS S 3 ⁧⁩هنا⁧⁩. على جانب Azure، تلتزم مفاتيح عنصر كائن ثنائي كبير الحجم بقواعد التسمية لمعرفات ⁧⁩C#⁧⁩.

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

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

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

يُنفذ AzCopy هذه الخطوات:

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

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

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

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

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

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

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