העתקת קבצים לאחסון 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:
- נווט לדף המסמכים הרשמי של AWS CLI
- תוריד את מתקין Windows 64-bit
- השק את הקובץ שהורדת ופעל לפי אשף ההתקנה
למערכות לינוקס:
הרץ את שלוש הפקודות הבאות דרך הטרמינל:
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).