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, CLI של 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

תהליך ההתקנה שונה במעט בהתאם למערכת ההפעלה שבה אתם משתמשים.

למערכות Windows:

למערכות לינוקס:

הרץ את שלוש הפקודות הבאות דרך הטרמינל:

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

עם CLI מותקן, הגיע הזמן להגדיר את אישורי AWS שלך לאימות.

ראשית, גש לחשבון AWS שלך ונווט לדשבורד שירות ה-IAM. צור משתמש חדש עם גישה תוכנתית והצמד את מדיניות ההרשאות המתאימה ל-S3:

תמונה 2 – משתמש AWS IAM

לאחר מכן, בקר בכרטיסיית "אישורי אבטחה" וצור זוג מפתחות גישה חדשים. ודא לשמור את מזהה מפתח הגישה ואת מפתח הגישה הסודי במקום מאובטח – אמזון לא תראה לך את המפתח הסודי שוב לאחר מסך זה:

תמונה 3 – אישורי משתמש AWS IAM

כעת פתח את חלון הפקודות שלך ובצע את הפקודה aws configure. יתבקש ממך להזין ארבעה פרטים: מזהה מפתח גישה, מפתח גישה סודי, אזור ברירת המחדל (אני משתמש ב-eu-central-1), ותבנית פלט מועדפת (נפוצה היא json):

תמונה 4 – הגדרת CLI של AWS

כדי לוודא שהכל מחובר בצורה תקינה, אמת את זהותך עם הפקודה הבאה:

aws sts get-caller-identity

אם הוגדר בצורה תקינה, תראה את פרטי החשבון שלך:

תמונה 5 – פקודת בדיקת חיבור CLI ל-AWS

יצירת דלי S3

לבסוף, עליך ליצור דלי S3 על מנת לאחסן את הקבצים שתעתיק.

עבור למקטע השירות S3 בAWS Console שלך ולחץ על "יצירת דלי". תזכורת: שמות הדליים חייבים להיות ייחודיים ברחבי ה-AWS. בחר שם מזהה, השאר את ההגדרות ברירת המחדל לעכשיו, ולחץ "צור":

תמונה 6 – יצירת דלי ב-AWS

לאחר היצירה, הדלי החדש שלך יופיע בקונסולה. בנוסף, תוכל לאשר את קיומו דרך שורת הפקודה:

aws s3 ls

תמונה 7 – כל הדליים הזמינים ב-S3

כל הדליים ב-S3 מוגדרים כפרטיים כברירת מחדל, אז תשים את זה בספר. אם אתה מתכוון להשתמש בדלי זה לקבצים הנגישים לציבור, עליך לשנות את מדיניות הדלי בהתאם.

כעת אתה מכונה להתחיל להשתמש בפקודת aws s3 cp להעברת קבצים. בוא נתחיל עם היסודות הבאים.

תחביר הפקודה הבסיסי של aws s3 cp

עכשיו שהגדרת את הכל, בואו נתחיל בשימוש הבסיסי בפקודת aws s3 cp. כפי שרגיל עם AWS, היופי נמצא בפשטות, גם אם הפקודה יכולה לטפל בתרחישי העברת קבצים שונים.

בצורתה הבסיסית ביותר, פקודת aws s3 cp עוקבת אחרי התחביר הבא:

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

כאשר <source> ו־<destination> יכולים להיות נתיבי קבצים מקומיים או S3 URIs (שמתחילים ב־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 למערכת המקומית שלך, פשוט הפוך את הסדר – המקור מהווה את S3 URI, והיעד הוא הנתיב המקומי שלך:

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 הוא חיוני כאשר מתעסקים עם קבצים מרובים – ללא זה, הפקודה תכשל אם המקור הוא תיקייה.

עם הפקודות הבסיסיות הללו, תוכל כבר לבצע רוב המשימות של העברת קבצים שתצטרך. אך בקטע הבא, תלמד עוד אפשרויות מתקדמות שיאפשרו לך לשלוט בצורה טובה יותר על תהליך ההעתקה.

אפשרויות ותכונות מתקדמות של ה- cp ב-S3 של AWS

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)

שימו לב שסדר הדגלים חשוב – CLI של AWS מעבד את הדגלים הללו בסדר רציף, לכן אם תניח --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

אמזון S3 מציעה כיתות אחסון שונות, כל אחת עם עלויות שונות ותכונות שיחזור שונות. כברירת מחדל, aws s3 cp מעלה קבצים לכיתת האחסון סטנדרטית, אך ניתן לציין כיתה שונה באמצעות הדגל --storage-class:

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

פקודה זו מעלה את large-archive.zip לכיתת האחסון Glacier, שהיא זולה משמעותית אך בעלת עלויות שיחזור גבוהות יותר וזמני שיחזור ארוכים יותר:

תמונה 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. זה יכול להפחית את זמן ההעברה ואת השימוש ברוחב פס כאשר אתה מעדכן באופן קבוע קבוצת קבצים גדולה.

אז, למה זה מועיל? רק תדמיין תרחישי פריסה שבהם אתה רוצה לעדכן את קבצי היישום שלך מבלי להעביר assets שלא השתנו שלא לצורך.

בעוד ש--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 הוא דקה שעה יום-בחודש חודש יום-בשבוע פקודה. הנה כמה דוגמאות נוספות:

  • הרץ כל שעה: 0 * * * * /path/to/your/backup.sh
  • הרץ כל יום שני בשעה 9 בבוקר: 0 9 * * 1 /path/to/your/backup.sh
  • הרץ ב-1 בכל חודש: 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 ל-לחלק קבצים הגדולים מ-100MB למספר חלקים לצורך העלאה. פעולה זו יש לה מספר יתרונות:

  • אם החיבור נופל, רק החלק המושפע צריך להיבדק מחדש.
  • חלקים יכולים להיות מועלים במקביל, מה שעשוי להגדיל את קצב ההעברה.
  • אתה יכול להשהות ולהמשיך העלאות גדולות.

בעת העברת נתונים בין אזורים, שקול להשתמש בהאצת העברת 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 cp

דבר אחד בטוח – לעיתים תיתקל בבעיות כאשר אתה עובד עם 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 Transfer Acceleration לביצועים טובים יותר.

טיפול בכשלונות בהעלאה

שגיאות נמצאות בעיקר בהעברת קבצים גדולים. כאשר זה קורה, נסה לטפל בכשלונות בצורה יעילה.

לדוגמה, ניתן להשתמש בדגל --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 cp

לסיכום, פקודת aws s3 cp היא הכלי המושלם להעתקת קבצים מקומיים ל-S3 ובחזרה.

למדת הכל על כך במאמר הזה. התחלת מהבסיסים והגדרת הסביבה, וסיימת בכתיבת סקריפטים מתוזמנים ואוטומטיים להעתקת קבצים. גם למדת איך להתמודד עם כמה שגיאות ואתגרים נפוצים בעת העברת קבצים, במיוחד קבצים גדולים.

אז אם אתה מפתח, מקצוען נתונים או מנהל מערכת, אני חושב שתמצא את הפקודה הזו שימושית. הדרך הטובה ביותר להרגיש נוח איתה היא להשתמש בה באופן קבוע. ודא שאתה מבין את היסודות, ואז השקיע קצת זמן באוטומציה של חלקים משעממים בעבודתך.

כדי ללמוד עוד על AWS, עקוב אחרי הקורסים האלה מבית DataCamp:

אתה אפילו יכול להשתמש ב-DataCamp כדי להתכונן למבחני הסמכה של AWS – AWS Cloud Practitioner (CLF-C02).

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