دليل AWS S3 cp: الدليل الشامل لنقل ملفات AWS S3

يمكن أن يكون نسخ الملفات إلى تخزين AWS يدويًا مملًا وعرضة للأخطاء وغير فعال – خاصة عند التعامل مع كميات كبيرة من البيانات. لا تريد ذلك.

يوفر واجهة سطر الأوامر AWS (CLI) أداة مريحة تسمى aws s3 cp التي تبسط هذه العملية. تتيح لك هذه الأمر نسخ الملفات من وإلى دلوهات Amazon S3 باستخدام أوامر بسيطة وقابلة للبرمجة تعمل عبر جميع أنظمة التشغيل. استخدام AWS CLI لا يوفر الوقت فحسب، بل يمكّن أيضًا من أتمتة مهام نقل الملفات الروتينية.

يوفر الأمر aws s3 cp العديد من الخيارات للتعامل مع سيناريوهات نقل الملفات المعقدة. يمكنك نسخ ملفات فردية، نقل دلائل كاملة بشكل متكرر، تصفية الملفات بناءً على أنماط، وحتى تحديد فئات تخزين مختلفة من أجل تحسين التكلفة.

في هذا الدليل، سأرشدك إلى كل ما تحتاج لمعرفته حول استخدام aws s3 cp بشكل فعال، من الأوامر الأساسية إلى التقنيات المتقدمة واستراتيجيات الأتمتة.

> جديد في خدمة AWS وغير متأكد من تخزين السحابي وS3؟ دليلنا المفصل عن S3 وEFS هو المكان المثالي للبدء. إذا كنت مهتمًا بشكل خاص بـ S3، تحقق من دليلنا الشامل حول S3.

ما هو AWS S3 cp؟

أمر aws s3 cp هو أداة ضمن واجهة سطر الأوامر لخدمة AWS التي تتيح لك نسخ الملفات بين النظام المحلي الخاص بك وتخزين Amazon S3.

ببساطة، تم تصميمه لتوفير تجربة سطر أوامر مألوفة تشبه أمر Linux القياسي cp، ولكن مصممة للتفاعل مع دلاء S3.

في جوهره، يقوم aws s3 cp بربط جهازك المحلي وبنية التخزين السحابية الخاصة بـ AWS. عند تنفيذ أمر aws s3 cp، يتولى واجهة سطر الأوامر الخاصة بـ AWS التحقق من الهوية و تقسيم الملفات للنقل الكبير ويضمن سلامة البيانات أثناء عملية النسخ. تدعم هذه الأداة نسخ الملفات الفردية، ونسخ ملفات متعددة باستخدام الرموز النمطية، وهياكل الدليل الكاملة باستخدام العمليات المتكررة.

أمر aws s3 cp قادر على العديد من الأشياء، سأقوم فقط بسردها بشكل مبسط:

  • نقل ثنائي الاتجاه (تحميل إلى S3 أو تنزيل من S3).
  • نسخ تكرارية لهياكل الدلائل بأكملها.
  • دعم لفئات تخزين S3 المختلفة (القياسية، التصنيف الذكي، جليسر، إلخ).
  • تصفية الملفات باستخدام أنماط الشمول/الاستبعاد.
  • الحفاظ على بيانات التعريف الخاصة بالملف أثناء عمليات النقل.
  • التكامل مع إدارة الهوية والوصول في AWS (IAM) للأمان.

ومع ذلك، تكمن قوة aws s3 cp في مرونتها وتكاملها مع نظام AWS. يمكنك تحديد معلمات مختلفة للتحكم في جوانب مثل فئة التخزين، التشفير، البيانات الوصفية، التحكم في الوصول، وغيرها. هذا يجعله مناسبًا لكل شيء بدءًا من نقل الملفات لمرة واحدة بسيطة إلى حلول نسخ احتياطي معقدة وآليّة.

الأمر مختلف عن استخدام وحدة تحكم إدارة AWS، التي تتطلب التنقل اليدوي والنقر. يمكن تنفيذ أمر aws s3 cp مباشرة من الطرفية الخاصة بك أو دمجه في النصوص وتدفقات العمل الآلي. هذا الوصول البرمجي إلى S3 أمر أساسي للعديد من المحترفين في مجال التكنولوجيا، خاصة مهندسي DevOps وعلماء البيانات.

في الختام، يوفر aws s3 cp حلاً موثوقًا يمكن برمجته للتعامل مع عمليات النقل الضخمة مع الحفاظ على الأداء. يمكنه استئناف التحميلات والتنزيلات المقطوعة، مما يجعله مفيدًا بشكل خاص عند التعامل مع اتصالات شبكة غير مستقرة أو عند نقل ملفات كبيرة جدًا.

فيما يلي، سأقودك خلال الأمور المملة – إعداد AWS CLI على نظامك.

إعداد AWS CLI و AWS S3

قبل الغوص في أمر aws s3 cp، تحتاج إلى تثبيت AWS CLI وتكوينه بشكل صحيح على نظامك. لا تقلق إذا لم تعمل مع AWS من قبل – عملية الإعداد سهلة ويجب أن تستغرق أقل من 10 دقائق.

سأقسم ذلك إلى ثلاث مراحل بسيطة: تثبيت أداة AWS CLI، تكوين بيانات الاعتماد الخاصة بك، وإنشاء حاوية S3 الأولى الخاصة بك للتخزين.

تثبيت AWS CLI

تختلف عملية التثبيت قليلاً بناءً على نظام التشغيل الذي تستخدمه.

بالنسبة لأنظمة ويندوز:

  • انتقل إلى صفحة التوثيق الرسمية لـ AWS CLI
  • قم بتنزيل مثبت Windows بتنسيق 64 بت
  • قم بتشغيل الملف الذي تم تنزيله واتبع معالم التثبيت

بالنسبة لأنظمة Linux:

قم بتشغيل الأوامر الثلاثة التالية من خلال الطرفية:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install

بالنسبة لأنظمة macOS:

بناءً على افتراض أنك قمت بتثبيت Homebrew، قم بتشغيل هذا الأمر من الطرفية:

brew install awscli

إذا لم يكن لديك Homebrew، استخدم هذين الأمرين بدلاً من ذلك:

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target /

للتأكد من نجاح التثبيت، قم بتشغيل aws --version في الطرفية. يجب أن ترى شيئًا مشابهًا لهذا:

الصورة 1 – إصدار AWS CLI

تكوين AWS CLI

مع التثبيت، حان الوقت لإعداد اعتمادات AWS الخاصة بك للمصادقة.

أولًا، قم بالوصول إلى حساب AWS الخاص بك وانتقل إلى لوحة تحكم خدمة IAM. قم بإنشاء مستخدم جديد بوصول برمجي وربط سياسة أذونات S3 المناسبة:

الصورة 2 – مستخدم AWS IAM

ثم، قم بزيارة علامة “بيانات اعتماد الأمان” وقم بإنشاء زوج مفاتيح وصول جديد. تأكد من حفظ كل من معرف مفتاح الوصول والمفتاح السري في مكان آمن – لن تظهر لك أمازون المفتاح السري مرة أخرى بعد هذه الشاشة:

الصورة 3 – بيانات اعتماد مستخدم AWS IAM

الآن افتح الطرفية الخاصة بك وقم بتنفيذ الأمر aws configure. سيُطلب منك أربع معلومات: معرّف مفتاح الوصول الخاص بك، ومفتاح الوصول السري، والمنطقة الافتراضية (أنا استخدم eu-central-1)، وتنسيق الإخراج المفضل (عادةً json):

الصورة 4 – تكوين AWS CLI

للتأكد من أن كل شيء متصل بشكل صحيح، قم بالتحقق من هويتك باستخدام الأمر التالي:

aws sts get-caller-identity

إذا تم تكوينه بشكل صحيح، سترى تفاصيل حسابك:

الصورة 5 – أمر اختبار اتصال AWS CLI

إنشاء دلو S3

وأخيرًا، تحتاج إلى إنشاء دلو S3 لتخزين الملفات التي ستقوم بنسخها.

انتقل إلى قسم خدمة S3 في وحدة تحكم AWS الخاصة بك وانقر على “إنشاء دلو”. تذكر أن أسماء الدلاء يجب أن تكون فريدة على مستوى عالمي عبر جميع خدمات AWS. اختر اسمًا مميزًا، اترك الإعدادات الافتراضية كما هي الآن، وانقر على “إنشاء”:

الصورة 6 – إنشاء دلو AWS

بمجرد الإنشاء، سيظهر الدلو الجديد في وحدة التحكم. يمكنك أيضًا تأكيد وجوده من خلال سطر الأوامر:

aws s3 ls

الصورة 7 – جميع الدلاء المتاحة في S3

يتم تكوين جميع الدلاء S3 كخاص افتراضيًا، لذا آخذ ذلك في الاعتبار. إذا كنت تنوي استخدام هذا الدلو لملفات يمكن الوصول إليها عمومًا، ستحتاج إلى تعديل سياسات الدلو وفقًا لذلك.

أنت الآن مجهز تمامًا لبدء استخدام الأمر aws s3 cp لنقل الملفات. دعنا نبدأ بالأساسيات بعد ذلك.

بنية الأمر الأساسي لنقل الملفات في AWS S3

الآن بعد أن قمت بتكوين كل شيء، دعنا نغوص في الاستخدام الأساسي لأمر aws s3 cp. كما هو الحال مع AWS، يكمن الجمال في البساطة، على الرغم من أن الأمر يمكنه التعامل مع سيناريوهات نقل ملفات مختلفة.

في أبسط صيغته، يتبع أمر aws s3 cp هذا الشكل:

aws s3 cp <source> <destination> [options]

حيث <source> و <destination> يمكن أن تكون مسارات ملفات محلية أو عناوين S3 URI (التي تبدأ بـ s3://). دعنا نستكشف ثلاثة من أكثر حالات الاستخدام شيوعًا.

نسخ ملف من النظام المحلي إلى S3

لنسخ ملف من نظامك المحلي إلى دلو S3، ستكون المصدر مسارًا محليًا والوجهة ستكون عنوان S3 URI:

aws s3 cp /Users/dradecic/Desktop/test_file.txt s3://testbucket-aws-cp-dradecic/test_file.txt

يقوم هذا الأمر برفع الملف test_file.txt من المجلد المحدد إلى دلو S3 المحدد. إذا كانت العملية ناجحة، سترى مخرجات على وحدة التحكم مثل هذه:

الصورة 8 – مخرجات وحدة التحكم بعد نسخ الملف المحلي

وعلى وحدة التحكم الإدارية لـ AWS، سترى ملفك قد تم رفعه:

الصورة 9 – محتويات دلو S3

وبالمثل، إذا كنت ترغب في نسخ مجلد محلي إلى دلو S3 الخاص بك ووضعه، دعنا نقول، في مجلد متداخل آخر، نفذ أمرًا مشابهًا لهذا:

aws s3 cp /Users/dradecic/Desktop/test_folder s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder/ --recursive

الصورة 10 – محتويات دلو S3 بعد رفع مجلد

سيتأكد الخيار --recursive من نسخ جميع الملفات والمجلدات الفرعية داخل المجلد.

فقط تذكر – S3 ليس لديها في الواقع مجلدات – هيكل المسار هو مجرد جزء من مفتاح الكائن، لكنها تعمل مفهوميًا مثل المجلدات.

نسخ ملف من S3 إلى النظام المحلي

لنسخ ملف من S3 إلى نظامك المحلي، فقط عكس الترتيب – المصدر يصبح URI الخاص بـ S3، والوجهة هي مسارك المحلي:

aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt

هذا الأمر يقوم بتنزيل test_file.txt من دلو S3 الخاص بك ويقوم بحفظه كـ downloaded_test_file.txt في الدليل المقدم. سترى الملف على نظامك المحلي على الفور:

صورة 11 – تنزيل ملف واحد من S3

إذا قمت بحذف اسم ملف الوجهة، سيستخدم الأمر اسم الملف الأصلي:

aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt .

صورة 12 – محتويات الملف الذي تم تنزيله

النقطة (.) تمثل الدليل الحالي الخاص بك، لذا سيقوم هذا بتنزيل test_file.txt إلى موقعك الحالي.

وأخيراً، لتنزيل دليل كامل، يمكنك استخدام أمر مشابه لهذا:

aws s3 cp s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder /Users/dradecic/Documents/test_folder --recursive

صورة 13 – محتويات المجلد الذي تم تنزيله

تذكر أن علامة --recursive ضرورية عند العمل مع ملفات متعددة – بدونها، سيفشل الأمر إذا كان المصدر دليلاً.

مع هذه الأوامر الأساسية، يمكنك بالفعل إنجاز معظم مهام نقل الملفات التي ستحتاجها. ولكن في القسم التالي، ستتعلم المزيد من الخيارات المتقدمة التي تمنحك تحكمًا أفضل في عملية النسخ.

خيارات وميزات AWS S3 cp المتقدمة

تقدم AWS عددًا من الخيارات المتقدمة التي تسمح لك بتحسين عمليات نسخ الملفات. في هذا القسم، سأعرض لك بعض العلامات والمعلمات الأكثر فائدة التي ستساعدك في مهامك اليومية.

استخدام علامتي –exclude و –include

أحيانًا ترغب فقط في نسخ بعض الملفات التي تتطابق مع أنماط معينة. تسمح لك العلامتان --exclude و --include بتصفية الملفات استنادًا إلى الأنماط، وتمنحك التحكم الدقيق في ما يتم نسخه.

لنبدأ بوضع الأساس، هذه هي هيكلية الدليل التي أعمل عليها:

صورة 14 – هيكلية الدليل

الآن، لنقل جميع الملفات من الدليل باستثناء ملفات .log:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*.log"

سيقوم هذا الأمر بنسخ جميع الملفات من الدليل advanced_folder إلى S3، مستبعدًا أي ملف يحمل امتداد .log:

صورة 15 – نتائج نسخ الدليل

يمكنك أيضًا دمج أنماط متعددة. لنفترض أنك ترغب في نسخ ملفات HTML و CSS فقط من مجلد المشروع:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*" --include "*.html" --include "*.css"

هذا الأمر يستبعد كل شيء أولاً (--exclude "*")، ثم يتضمن فقط الملفات ذات امتدادات .html و .css. يبدو النتيجة كما يلي:

صورة 16 – نتائج نسخ الدليل (2)

تذكر أن ترتيب العلامات مهم – يعالج AWS CLI هذه العلامات بتسلسل، لذا إذا وضعت --include قبل --exclude، ستحصل على نتائج مختلفة:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --include "*.html" --include "*.css" --exclude "*"

هذه المرة، لم يتم نسخ أي شيء إلى الحاوية:

صورة 17 – نتائج نسخ الدليل (3)

تحديد فئة تخزين S3

تقدم خدمة Amazon S3 فئات تخزين مختلفة، كل منها بتكاليف وخصائص استرجاع مختلفة. بشكل افتراضي، يقوم الأمر aws s3 cp برفع الملفات إلى فئة التخزين Standard، ولكن يمكنك تحديد فئة مختلفة باستخدام العلم --storage-class:

aws s3 cp /Users/dradecic/Desktop/large-archive.zip s3://testbucket-aws-cp-dradecic/archives/ --storage-class GLACIER

يقوم هذا الأمر برفع الملف large-archive.zip إلى فئة تخزين Glacier، التي تكون أرخص بكثير ولكن لها تكاليف استرجاع أعلى وأوقات استرجاع أطول:

Image 18 – نسخ الملفات إلى S3 باستخدام فئات تخزين مختلفة

تشمل فئات التخزين المتاحة:

  • STANDARD (افتراضي): تخزين عام بمتانة وتوفر عاليين.
  • REDUCED_REDUNDANCY (غير موصى به بعد الآن): أقل متانة، خيار توفير التكاليف، تم إيقافه الآن.
  • STANDARD_IA (الوصول غير المتكرر): تخزين بتكلفة أقل للبيانات التي يتم الوصول إليها بشكل أقل تكرارًا.
  • ONEZONE_IA (الوصول غير المتكرر في منطقة واحدة): تخزين بتكلفة أقل للوصول غير المتكرر في منطقة توفر AWS واحدة.
  • INTELLIGENT_TIERING: يقوم بتحريك البيانات تلقائيًا بين الطبقات الخزنية بناءً على أنماط الوصول.
  • GLACIER: تخزين أرشيفي بتكلفة منخفضة للاحتفاظ بالبيانات لفترات طويلة، يمكن الاسترجاع خلال دقائق إلى ساعات.
  • DEEP_ARCHIVE: أرخص تخزين أرشيفي، يمكن الاسترجاع خلال ساعات، مثالي للنسخ الاحتياطي على المدى الطويل.

إذا كنت تقوم بنسخ ملفات لا تحتاج إليها على الفور، فاستخدام GLACIER أو DEEP_ARCHIVE يمكن أن يوفر لك توفيرًا كبيرًا في تكاليف التخزين.

مزامنة الملفات باستخدام العلم –exact-timestamps

عند تحديث الملفات في S3 التي تكون موجودة بالفعل، قد ترغب في نسخ الملفات التي تم تغييرها فقط. تساعد العلامة --exact-timestamps في ذلك عن طريق مقارنة الطوابع الزمنية بين المصدر والوجهة.

إليك مثالاً:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exact-timestamps

باستخدام هذه العلامة، سيقوم الأمر بنسخ الملفات فقط إذا كانت الطوابع الزمنية لها تختلف عن الملفات الموجودة بالفعل في S3. يمكن أن يقلل هذا من وقت النقل واستخدام عرض النطاق الترددي عند تحديث مجموعة كبيرة من الملفات بانتظام.

إذاً، لماذا يعتبر هذا مفيداً؟ تخيل سيناريوهات النشر حيث ترغب في تحديث ملفات التطبيق الخاص بك دون نقل الأصول غير المتغيرة بشكل غير ضروري.

على الرغم من أن --exact-timestamps مفيدة لأداء بعض أشكال المزامنة، إذا كنت بحاجة إلى حلاً أكثر تطوراً، فكر في استخدام aws s3 sync بدلاً من aws s3 cp. تم تصميم الأمر sync خصيصاً للحفاظ على تزامن الدلائل ولديه قدرات إضافية لهذا الغرض. كتبت كل شيء عن الأمر sync في دليل AWS S3 Sync.

باستخدام هذه الخيارات المتقدمة، يمكنك الآن السيطرة بشكل أفضل على عمليات ملفات S3 الخاصة بك. يمكنك استهداف ملفات محددة، تحسين تكاليف التخزين، وتحديث ملفاتك بكفاءة. في القسم القادم، ستتعلم كيفية أتمتة هذه العمليات باستخدام النصوص والمهام المجدولة.

أتمتة نقل الملفات باستخدام AWS S3 cp

حتى الآن، تعلمت كيفية نسخ الملفات يدويًا إلى ومن S3 باستخدام سطر الأوامر. واحدة من أكبر مزايا استخدام aws s3 cp هي أنك يمكنك بسهولة أتمتة هذه النقلات، مما سيوفر لك الكثير من الوقت.

دعنا نستكشف كيف يمكنك دمج أمر aws s3 cp في السكريبتات والمهام المجدولة لنقل الملفات بدون تدخل.

استخدام AWS S3 cp في السكريبتات

إليك مثال بسيط على سكريبت bash يقوم بعمل نسخة احتياطية لدليل إلى S3، ويضيف طابع زمني إلى النسخة الاحتياطية، وينفذ معالجة الأخطاء وتسجيلها في ملف:

#!/bin/bash # تعيين المتغيرات SOURCE_DIR="/Users/dradecic/Desktop/advanced_folder" BUCKET="s3://testbucket-aws-cp-dradecic/backups" DATE=$(date +%Y-%m-%d-%H-%M) BACKUP_NAME="backup-$DATE" LOG_FILE="/Users/dradecic/logs/s3-backup-$DATE.log" # التأكد من وجود دليل السجلات mkdir -p "$(dirname "$LOG_FILE")" # إنشاء النسخة الاحتياطية وتسجيل المخرجات echo "Starting backup of $SOURCE_DIR to $BUCKET/$BACKUP_NAME" | tee -a $LOG_FILE aws s3 cp $SOURCE_DIR $BUCKET/$BACKUP_NAME --recursive 2>&1 | tee -a $LOG_FILE # التحقق مما إذا كانت النسخة الاحتياطية ناجحة if [ $? -eq 0 ]; then echo "Backup completed successfully on $DATE" | tee -a $LOG_FILE else echo "Backup failed on $DATE" | tee -a $LOG_FILE fi

احفظ هذا كـ backup.sh، واجعله قابلًا للتنفيذ بـ chmod +x backup.sh، ولديك الآن سكريبت قابل لإعادة الاستخدام!

يمكنك بعد ذلك تشغيله باستخدام الأمر التالي:

./backup.sh

صورة 19 – السكريبت يعمل في الطرفية

على الفور بعد ذلك، سيتم ملء مجلد backups في الدلو:

صورة 20 – النسخة الاحتياطية المخزنة في دلو S3

دعنا نأخذ ذلك إلى المستوى التالي من خلال تشغيل السكريبت وفق جدول زمني.

جدولة نقل الملفات باستخدام مهام cron

الآن بعد أن لديك سكريبت، الخطوة التالية هي جدولته ليعمل تلقائيًا في أوقات معينة.

إذا كنت تستخدم لينكس أو macOS، يمكنك استخدام cron لجدولة النسخ الاحتياطية الخاصة بك. إليك كيفية إعداد مهمة cron لتشغيل برنامج النسخ الاحتياطي الخاص بك كل يوم عند منتصف الليل:

1. افتح ملف crontab الخاص بك للتعديل:

crontab -e

2. أضف السطر التالي لتشغيل البرنامج النصي الخاص بك يوميًا عند منتصف الليل:

0 0 * * * /path/to/your/backup.sh

الصورة 21 – مهمة cron لتشغيل البرنامج النصي يوميًا

تنسيق مهام cron هو minute hour day-of-month month day-of-week command. إليك بعض الأمثلة الإضافية:

  • تشغيل كل ساعة: 0 * * * * /path/to/your/backup.sh
  • تشغيل كل يوم إثنين في الساعة 9 صباحًا: 0 9 * * 1 /path/to/your/backup.sh
  • تشغيل في اليوم الأول من كل شهر: 0 0 1 * * /path/to/your/backup.sh

وهذا كل شيء! سيتم الآن تشغيل البرنامج النصي backup.sh على الفترات المجدولة.

أتمتة نقل ملفات S3 هي طريقة ممتازة. إنها مفيدة بشكل خاص في سيناريوهات مثل:

  • نسخ احتياطية يومية للبيانات المهمة
  • مزامنة صور المنتجات إلى موقع الويب
  • نقل ملفات السجل إلى التخزين طويل الأمد
  • نشر ملفات الموقع المحدثة

ستساعدك تقنيات الأتمتة مثل هذه في إعداد نظام موثوق يدير عمليات نقل الملفات دون تدخل يدوي. عليك فقط كتابتها مرة واحدة، ثم يمكنك نسيانها.

في القسم التالي، سأستعرض بعض الممارسات الأفضل لجعل عمليات aws s3 cp لديك أكثر أمانًا وكفاءة.

أفضل الممارسات لاستخدام AWS S3 cp

على الرغم من أن أمر aws s3 cp سهل الاستخدام، إلا أن الأمور قد تسير بشكل خاطئ.

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

إدارة الملفات بكفاءة

عند العمل مع S3، فإن تنظيم ملفاتك بشكل منطقي سيوفر لك الوقت والصداع في المستقبل.

أولاً، قم بتحديد نمط ثابت لتسمية السلة والبادئة. على سبيل المثال، يمكنك فصل بياناتك حسب البيئة أو التطبيق أو التاريخ:

s3://company-backups/production/database/2023-03-13/ s3://company-backups/staging/uploads/2023-03/

تسهل هذه النوعية من التنظيم:

  • العثور على ملفات محددة عند الحاجة إليها.
  • تطبيق سياسات الصناديق والأذونات على المستوى الصحيح.
  • إعداد قواعد دورة الحياة لأرشفة أو حذف البيانات القديمة.

نصيحة أخرى: عند نقل مجموعات كبيرة من الملفات، ضع في اعتبارك تجميع الملفات الصغيرة معًا أولاً (باستخدام zip أو tar) قبل الرفع. هذا يقلل من عدد مكالمات API إلى S3، مما يمكن أن يقلل التكاليف ويسرع النقل.

# بدلاً من نسخ آلاف الملفات الصغيرة # ضغطها أولاً باستخدام أمر tar ثم قم بالرفع tar -czf example-logs-2025-03.tar.gz /var/log/application/ aws s3 cp example-logs-2025-03.tar.gz s3://testbucket-aws-cp-dradecic/logs/2025/03/

التعامل مع نقل البيانات الكبيرة

عندما تقوم بنسخ ملفات كبيرة أو العديد من الملفات مرة واحدة، هناك بعض التقنيات لجعل العملية أكثر موثوقية وكفاءة.

يمكنك استخدام العلم --quiet لتقليل الإخراج عند تشغيل النصوص:

aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/backups/ --recursive --quiet

يمنع هذا العلم عرض معلومات التقدم لكل ملف، مما يجعل إدارة السجلات أكثر إدارة. كما أنه يحسن الأداء قليلاً.

للملفات الكبيرة جدًا، اعتبر استخدام تحميلات متعددة باستخدام العلم --multipart-threshold:

aws s3 cp huge-file.iso s3://testbucket-aws-cp-dradecic/backups/ --multipart-threshold 100MB

تخبر الإعدادات أعلاه AWS CLI بـ تقسيم الملفات التي يزيد حجمها عن 100 ميجابايت إلى أجزاء متعددة للتحميل. يوجد بذلك بعض الفوائد:

  • إذا انقطع الاتصال، يجب إعادة محاولة الجزء المتأثر فقط.
  • يمكن رفع الأجزاء بشكل متزامن، مما قد يزيد من معدل النقل.
  • يمكنك إيقاف واستئناف الرفع الكبير.

عند نقل البيانات بين المناطق، ضع في اعتبارك استخدام تسريع نقل S3 لرفع أسرع:

aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com

يحول ذلك نقل البيانات عبر شبكة أمازون الطرفية، مما يمكن أن يسرع بشكل كبير من عمليات النقل بين المناطق.

ضمان الأمان

يجب أن تكون الأمان دائمًا أولوية قصوى عند العمل مع بياناتك في السحابة.

أولاً، تأكد من أن أذونات IAM الخاصة بك تتبع مبدأ الامتياز الأدنى.امنح فقط الأذونات المحددة المطلوبة لكل مهمة.

إليك مثالًا على سياسة يمكنك تعيينها للمستخدم:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::testbucket-aws-cp-dradecic/backups/*" } ] }

تسمح هذه السياسة بنسخ الملفات إلى ومن البادئة “backups” فقط في “my-bucket”.

طريقة إضافية لزيادة الأمان هيتمكين التشفير للبيانات الحساسة. يمكنك تحديد التشفير على الجانب الخادم عند التحميل:

aws s3 cp confidential.docx s3://testbucket-aws-cp-dradecic/ --sse AES256

أو، لزيادة الأمان، استخدم خدمة إدارة المفاتيح في AWS (KMS):

aws s3 cp secret-data.json s3://testbucket-aws-cp-dradecic/ --sse aws:kms --sse-kms-key-id myKMSKeyId

ومع ذلك، للعمليات الحساسة للغاية، انظر إلى نقاط نهاية VPC لـS3. هذا يحافظ على حركة المرور ضمن شبكة AWS ويتجنب الإنترنت العام تمامًا.

في القسم القادم، ستتعلم كيفية استكشاف الأخطاء الشائعة التي قد تواجهها عند العمل بهذا الأمر.

استكشاف أخطاء نقل AWS S3

شيء واحد مؤكد – ستصادف أحيانًا مشاكل عند العمل مع aws s3 cp. ولكن، من خلال فهم الأخطاء الشائعة وحلولها، ستوفر بعض الوقت والإحباط عندما لا تسير الأمور كما هو مخطط لها.

في هذا القسم، سأريك أكثر المشاكل شيوعًا وكيفية إصلاحها.

الأخطاء الشائعة وحلولها

خطأ: “تم رفض الوصول”

هذا على الأرجح هو الخطأ الأكثر شيوعًا الذي ستواجهه:

upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

هذا يعني عادةً واحدة من ثلاثة أشياء:

  • ليس لدى مستخدم IAM الخاص بك أذونات كافية لتنفيذ العملية.
  • سياسة الدلو تقيّد الوصول.
  • انتهت صلاحية بيانات اعتماد AWS الخاصة بك.

لإصلاح المشكلة:

  • تحقق من أذونات IAM الخاصة بك للتأكد من أن لديك الأذونات اللازمة s3:PutObject (للتحميل) أو s3:GetObject (للتنزيل).
  • تحقق من أن سياسة الدلو لا تحد من إجراءاتك.
  • قم بتشغيل aws configure لتحديث بيانات اعتمادك إذا كانت قد انتهت صلاحيتها.

خطأ: “لا يوجد ملف أو دليل بهذا الاسم”

يحدث هذا الخطأ عندما لا يكون الملف المحلي أو الدليل الذي تحاول نسخه موجودًا:

upload failed: ./missing-file.txt to s3://testbucket-aws-cp-dradecic/missing-file.txt An error occurred (404) when calling the PutObject operation: Not Found

الحل بسيط – تحقق من مسارات الملفات الخاصة بك بعناية. تكون المسارات حساسة لحالة الأحرف، لذا عليك أن تضع ذلك في اعتبارك. كما عليك التأكد من أنك في الدليل الصحيح عند استخدام المسارات النسبية.

خطأ: “السلة المحددة غير موجودة”

إذا رأيت هذا الخطأ:

upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist

تحقق من:

  • أخطاء الكتابة في اسم السلة الخاص بك.
  • ما إذا كنت تستخدم منطقة AWS الصحيحة.
  • إذا كانت الدلو فعلاً موجودة (قد تم حذفها).

يمكنك عرض قائمة جميع الدلاء الخاصة بك باستخدام aws s3 ls للتحقق من الاسم الصحيح.

خطأ: “انتهت مهلة الاتصال”

قد تتسبب مشكلات الشبكة في انقطاع الاتصال:

upload failed: ./largefile.zip to s3://testbucket-aws-cp-dradecic/largefile.zip An error occurred (RequestTimeout) when calling the PutObject operation: Request timeout

لحل هذه المشكلة:

  • تحقق من اتصالك بالإنترنت.
  • حاول استخدام ملفات أصغر أو تمكين تحميل الملفات متعددة الأجزاء للملفات الكبيرة.
  • اعتبر استخدام تسريع نقل AWS لتحسين الأداء.

معالجة فشل التحميل

من المرجح أن تحدث الأخطاء بشكل أكبر عند نقل الملفات الكبيرة. عندما يكون الأمر كذلك، حاول التعامل مع الفشل بطريقة سلسة.

على سبيل المثال، يمكنك استخدام علامة --only-show-errors لتسهيل تشخيص الأخطاء في السكربتات:

aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/ --recursive --only-show-errors

هذا يخفي رسائل النقل الناجحة، ويظهر فقط الأخطاء، مما يجعل استكشاف الأخطاء وإصلاحها في عمليات النقل الكبيرة أسهل بكثير.

للتعامل مع عمليات النقل المتقطعة، ستقوم الأمر --recursive بتخطي الملفات الموجودة بالفعل في الوجهة بنفس الحجم تلقائيًا. ومع ذلك، لتكون أكثر شمولاً، يمكنك استخدام عمليات إعادة المحاولة المدمجة في AWS CLI لمشكلات الشبكة عن طريق ضبط هذه المتغيرات البيئية:

export AWS_RETRY_MODE=standard export AWS_MAX_ATTEMPTS=5 aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/

هذا يخبر AWS CLI بإعادة المحاولة تلقائيًا للعمليات الفاشلة حتى 5 مرات.

ولكن بالنسبة لمجموعات البيانات الكبيرة جدًا، يُفضل استخدام aws s3 sync بدلاً من cp، حيث إنه مصمم للتعامل مع الانقطاعات بشكل أفضل:

aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/

سيقوم أمر sync بنقل الملفات التي تختلف عن تلك الموجودة بالفعل في الوجهة، مما يجعله مثاليًا لاستئناف نقل الملفات الكبيرة المنقطعة.

إذا كنت تفهم هذه الأخطاء الشائعة وتنفذ معالجة الأخطاء السليمة في نصوصك، فسوف تجعل عمليات نسخ S3 الخاصة بك أكثر قوة وموثوقية بكثير.

تجميع أمر نسخ AWS S3

لختام، أمر aws s3 cp هو متجر واحد لنسخ الملفات المحلية إلى S3 والعكس.

لقد تعلمت كل شيء عن ذلك في هذه المقالة. بدأت من الأساسيات وتكوين البيئة، وانتهيت بكتابة النصوص المجدولة والآلية لنسخ الملفات. كما تعلمت كيفية التغلب على بعض الأخطاء والتحديات الشائعة عند نقل الملفات، خاصة الكبيرة.

إذا كنت مطورًا أو محترفًا في مجال البيانات أو مسؤول نظام، فأعتقد أنك ستجد هذا الأمر مفيدًا. أفضل طريقة لتحسين مهاراتك به هي استخدامه بانتظام. تأكد من فهم الأساسيات، ثم قض بعض الوقت في أتمتة الجوانب المملة من عملك.

لمعرفة المزيد حول خدمات AWS، اتبع هذه الدورات التدريبية من DataCamp:

يمكنك حتى استخدام DataCamp للتحضير لاختبارات شهادة AWS – AWS Cloud Practitioner (CLF-C02).

Source:
https://www.datacamp.com/tutorial/aws-s3-cp