कोर्स
AWS स्टोरेज पर फाइलें मैन्युअल रूप से कॉपी करना थकाऊ, त्रुटिपूर्ण, और अक्षम हो सकता है—खासतौर पर जब बड़े डेटा वॉल्यूम के साथ काम कर रहे हों। आप ऐसा नहीं चाहेंगे।
AWS Command Line Interface (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 Command Line Interface के भीतर एक यूटिलिटी है जो आपको आपके लोकल सिस्टम और Amazon S3 स्टोरेज के बीच फाइलें कॉपी करने देती है।
मूल रूप से, इसका डिजाइन मानक Linux cp कमांड जैसा परिचित कमांड-लाइन अनुभव देने के लिए किया गया है, लेकिन S3 बकेट्स के साथ इंटरैक्शन के लिए अनुकूलित है।
मूल स्तर पर, aws s3 cp आपकी लोकल मशीन और AWS के क्लाउड स्टोरेज इन्फ्रास्ट्रक्चर को जोड़ता है। जब आप aws s3 cp कमांड चलाते हैं, तो AWS CLI बड़े ट्रांसफर्स के लिए प्रमाणीकरण और फाइल चंकिंग संभालता है और कॉपी प्रक्रिया के दौरान डेटा अखंडता सुनिश्चित करता है। यह यूटिलिटी व्यक्तिगत फाइलें, वाइल्डकार्ड से कई फाइलें, और रिकर्सिव ऑपरेशंस से पूरी डायरेक्टरी संरचनाएं कॉपी करने का समर्थन करती है।
aws s3 cp बहुत कुछ करने में सक्षम है, मैं बस कुछ सूचीबद्ध कर देता हूँ:
- द्विदिश ट्रांसफर (S3 पर अपलोड या S3 से डाउनलोड)।
- पूरी डायरेक्टरी संरचनाओं की रिकर्सिव कॉपी।
- विभिन्न S3 स्टोरेज क्लास का समर्थन (Standard, Intelligent-Tiering, Glacier, आदि)।
- इनक्लूड/एक्सक्लूड पैटर्न का उपयोग कर फाइल फ़िल्टरिंग।
- ट्रांसफर के दौरान फाइल मेटाडेटा का संरक्षित रहना।
- सुरक्षा के लिए AWS Identity and Access Management (IAM) के साथ एकीकरण।
हालाँकि, aws s3 cp की शक्ति इसकी लचीलापन और AWS इकोसिस्टम के साथ एकीकरण में निहित है। आप स्टोरेज क्लास, एन्क्रिप्शन, मेटाडेटा, एक्सेस कंट्रोल, और अन्य पहलुओं को नियंत्रित करने के लिए अलग-अलग पैरामीटर निर्दिष्ट कर सकते हैं। यह इसे साधारण एकबारगी फाइल ट्रांसफर से लेकर जटिल, स्वचालित बैकअप समाधान तक के लिए उपयुक्त बनाता है।
यह कमांड AWS Management Console के उपयोग से अलग है, जहाँ मैन्युअल नेविगेशन और क्लिकिंग की आवश्यकता होती है। 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 डॉक्युमेंटेशन पेज पर जाएँ
- 64-बिट Windows इंस्टॉलर डाउनलोड करें
- डाउनलोड की गई फाइल लॉन्च करें और इंस्टॉलेशन विज़ार्ड को फॉलो करें
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 कॉन्फ़िगर करना
CLI इंस्टॉल होने के बाद, अब प्रमाणीकरण के लिए अपने AWS क्रेडेंशियल्स सेट करने का समय है।
पहले, अपने AWS अकाउंट में जाकर IAM सर्विस डैशबोर्ड खोलें। प्रोग्रामैटिक एक्सेस वाला नया यूज़र बनाएँ और उपयुक्त S3 परमिशन पॉलिसी संलग्न करें:

छवि 2 - AWS IAM यूज़र
इसके बाद, "Security credentials" टैब पर जाएँ और नई एक्सेस की पेयर जनरेट करें। सुनिश्चित करें कि Access key ID और Secret access key दोनों को सुरक्षित जगह सहेज लें—इस स्क्रीन के बाद Amazon आपको सीक्रेट की फिर से नहीं दिखाएगा:

छवि 3 - AWS IAM यूज़र क्रेडेंशियल्स
अब अपना टर्मिनल खोलें और aws configure कमांड चलाएँ। आपसे चार चीज़ों के लिए पूछा जाएगा: आपकी Access key ID, Secret access key, डिफ़ॉल्ट रीजन (मैं eu-central-1 इस्तेमाल कर रहा हूँ), और पसंदीदा आउटपुट फॉर्मैट (आम तौर पर json):

छवि 4 - AWS CLI कॉन्फ़िगरेशन
सुनिश्चित करने के लिए कि सब कुछ सही जुड़ा है, निम्न कमांड से अपनी पहचान वेरिफाई करें:
aws sts get-caller-identity
यदि कॉन्फ़िगरेशन सही है, तो आपको अपने अकाउंट विवरण दिखाई देंगे:

छवि 5 - AWS CLI टेस्ट कनेक्शन कमांड
S3 बकेट बनाना
अंत में, आपको वह S3 बकेट बनाना होगा जिसमें आप फाइलें कॉपी करेंगे।
अपने AWS Console में S3 सर्विस सेक्शन पर जाएँ और "Create bucket" पर क्लिक करें। याद रखें कि बकेट नाम पूरे AWS में ग्लोबली यूनिक होना चाहिए। एक विशिष्ट नाम चुनें, अभी के लिए डिफ़ॉल्ट सेटिंग्स रहने दें, और "Create" पर क्लिक करें:

छवि 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 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 से अपने लोकल सिस्टम पर फाइल कॉपी करने के लिए, क्रम उलटा कर दें—सोर्स S3 URI होगा, और डेस्टिनेशन आपका लोकल पाथ:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt
यह कमांड आपके S3 बकेट से test_file.txt डाउनलोड करता है और दिए गए डायरेक्टरी में 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 स्टोरेज क्लास में अपलोड करता है, जो काफी सस्ता है, लेकिन रिट्रीवल लागत अधिक और समय लंबा होता है:

छवि 18 - अलग स्टोरेज क्लास के साथ S3 पर फाइल कॉपी करना
उपलब्ध स्टोरेज क्लास में शामिल हैं:
STANDARD(डिफ़ॉल्ट): उच्च स्थायित्व और उपलब्धता वाला सामान्य-उद्देश्य स्टोरेज।REDUCED_REDUNDANCY(अब अनुशंसित नहीं): कम स्थायित्व, लागत-बचत विकल्प, अब डिप्रिकेटेड।STANDARD_IA(Infrequent Access): कम बार एक्सेस किए जाने वाले डेटा के लिए कम लागत वाला स्टोरेज।ONEZONE_IA(Single Zone Infrequent Access): एकल AWS Availability Zone में कम लागत, कम-आवृत्ति एक्सेस स्टोरेज।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 cp के बजाय aws s3 sync का उपयोग करने पर विचार करें। sync कमांड खास तौर पर डायरेक्टरी को सिंक में रखने के लिए डिज़ाइन किया गया है और इस उद्देश्य के लिए अतिरिक्त क्षमताएँ रखता है। मैंने AWS S3 Sync ट्यूटोरियल में सिंक कमांड पर विस्तार से लिखा है।
इन उन्नत विकल्पों के साथ, अब आपके पास S3 फाइल ऑपरेशंस पर अधिक सूक्ष्म नियंत्रण है। आप विशिष्ट फाइलों को टार्गेट कर सकते हैं, स्टोरेज लागत को अनुकूलित कर सकते हैं, और अपनी फाइलों को कुशलतापूर्वक अपडेट कर सकते हैं। अगले सेक्शन में, आप स्क्रिप्ट्स और शेड्यूल्ड टास्क्स का उपयोग करके इन ऑपरेशंस को ऑटोमेट करना सीखेंगे।
AWS S3 cp के साथ फाइल ट्रांसफर ऑटोमेट करना
अब तक, आपने कमांड लाइन का उपयोग करके S3 में और S3 से फाइलें मैन्युअल रूप से कॉपी करना सीख लिया है। aws s3 cp का एक बड़ा फायदा यह है कि आप इन ट्रांसफर्स को आसानी से ऑटोमेट कर सकते हैं, जो आपका बहुत समय बचाएगा।
आइए देखें कि आप बिना हस्तक्षेप वाले फाइल ट्रांसफर्स के लिए aws s3 cp कमांड को स्क्रिप्ट्स और शेड्यूल्ड जॉब्स में कैसे एकीकृत कर सकते हैं।
स्क्रिप्ट्स में AWS S3 cp का उपयोग
यहाँ एक सरल bash स्क्रिप्ट उदाहरण है जो किसी डायरेक्टरी का बैकअप S3 पर लेता है, बैकअप में टाइमस्टैम्प जोड़ता है, और फाइल में एरर हैंडलिंग व लॉगिंग लागू करता है:
#!/bin/bash
# Set variables
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"
# Ensure the logs directory exists
mkdir -p "$(dirname "$LOG_FILE")"
# Create the backup and log the output
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
# Check if the backup was successful
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 से executable बनाएं, और आपके पास एक पुन:उपयोग योग्य बैकअप स्क्रिप्ट है!
इसके बाद आप इसे निम्न कमांड से चला सकते हैं:
./backup.sh

छवि 19 - टर्मिनल में स्क्रिप्ट चल रही है
तुरंत बाद, बकेट पर backups फोल्डर भर जाएगा:

छवि 20 - S3 बकेट पर संग्रहीत बैकअप
आइए इसे अगले स्तर पर ले जाएँ और स्क्रिप्ट को शेड्यूल पर चलाएँ।
क्रोन जॉब्स के साथ फाइल ट्रांसफर शेड्यूल करना
अब जब आपके पास स्क्रिप्ट है, अगला कदम इसे विशेष समय पर स्वचालित रूप से चलने के लिए शेड्यूल करना है।
यदि आप Linux या macOS पर हैं, तो आप बैकअप शेड्यूल करने के लिए cron का उपयोग कर सकते हैं। यहाँ बताया गया है कि अपनी बैकअप स्क्रिप्ट को हर दिन आधी रात को चलाने के लिए क्रोन जॉब कैसे सेट करें:
1. एडिटिंग के लिए अपना crontab खोलें:
crontab -e
2. अपनी स्क्रिप्ट को हर दिन आधी रात को चलाने के लिए निम्न लाइन जोड़ें:
0 0 * * * /path/to/your/backup.sh

छवि 21 - स्क्रिप्ट को दैनिक चलाने के लिए क्रोन जॉब
क्रोन जॉब्स का फॉर्मैट 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 का उपयोग करके) एक साथ समूहित करने पर विचार करें। इससे S3 पर API कॉल की संख्या कम होती है, जो लागत घटाती है और ट्रांसफर को तेज़ करती है।
# Instead of copying thousands of small log files
# tar them first, then upload
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 Transfer Acceleration का उपयोग करने पर विचार करें:
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com
यह आपके ट्रांसफर को Amazon के एज नेटवर्क के जरिए रूट करता है, जो क्रॉस-रीजन ट्रांसफर्स को काफी तेज़ कर सकता है।
सुरक्षा सुनिश्चित करना
क्लाउड में अपने डेटा के साथ काम करते समय सुरक्षा हमेशा शीर्ष प्राथमिकता होनी चाहिए।
सबसे पहले, सुनिश्चित करें कि आपके IAM परमिशन न्यूनतम विशेषाधिकार (least privilege) के सिद्धांत का पालन करते हैं। प्रत्येक कार्य के लिए केवल आवश्यक विशिष्ट परमिशन ही दें।
यहाँ एक उदाहरण पॉलिसी है जिसे आप यूज़र को असाइन कर सकते हैं:
{
"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 Key Management Service (KMS) का उपयोग करें:
aws s3 cp secret-data.json s3://testbucket-aws-cp-dradecic/ --sse aws:kms --sse-kms-key-id myKMSKeyId
हालाँकि, अत्यधिक संवेदनशील ऑपरेशंस के लिए, S3 के लिए VPC एंडपॉइंट्स का उपयोग करने पर विचार करें। यह आपके ट्रैफ़िक को AWS नेटवर्क के भीतर रखता है और सार्वजनिक इंटरनेट से पूरी तरह बचाता है।
अगले सेक्शन में, आप सीखेंगे कि इस कमांड के साथ काम करते समय आने वाली सामान्य समस्याओं का निवारण कैसे करें।
AWS S3 cp त्रुटियों का निवारण
एक बात तय है—aws s3 cp के साथ काम करते समय आपको कभी-कभी समस्याओं का सामना करना पड़ेगा। लेकिन, आम त्रुटियों और उनके समाधानों को समझकर, जब चीजें योजना के मुताबिक न हों तो आप समय और परेशानी बचाएँगे।
इस सेक्शन में, मैं आपको सबसे अधिक बार आने वाली समस्याएँ और उन्हें ठीक करने के तरीके दिखाऊँगा।
आम त्रुटियाँ और उनके समाधान
त्रुटि: "Access Denied"
यह शायद सबसे आम त्रुटि है जिसका आप सामना करेंगे:
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चलाकर अपने क्रेडेंशियल्स अपडेट करें यदि उनकी अवधि समाप्त हो गई है।
त्रुटि: "No such file or directory"
यह त्रुटि तब आती है जब वह लोकल फाइल या डायरेक्टरी मौजूद नहीं होती जिसे आप कॉपी करने का प्रयास कर रहे हैं:
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
समाधान सरल है—अपने फाइल पाथ्स को ध्यान से जाँचें। पाथ्स केस-सेंसिटिव होते हैं, इसे ध्यान में रखें। साथ ही, रिलेटिव पाथ्स का उपयोग करते समय यह सुनिश्चित करें कि आप सही डायरेक्टरी में हैं।
त्रुटि: "The specified bucket does not exist"
यदि आपको यह त्रुटि दिखाई दे:
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 से अपने सभी बकेट्स सूचीबद्ध कर सकते हैं।
त्रुटि: "Connection timed out"
नेटवर्क समस्याएँ कनेक्शन टाइमआउट का कारण बन सकती हैं:
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 बार तक फिर से आज़माने के लिए कहता है।
लेकिन बहुत बड़े डेटासेट के लिए, cp के बजाय aws s3 sync का उपयोग करने पर विचार करें, क्योंकि यह रुकावटों को बेहतर तरीके से संभालने के लिए डिज़ाइन किया गया है:
aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/
sync कमांड केवल उन फाइलों को ट्रांसफर करेगा जो डेस्टिनेशन में पहले से मौजूद फाइलों से भिन्न हैं, जिससे बाधित बड़े ट्रांसफर को फिर से शुरू करने के लिए यह आदर्श है।
यदि आप इन आम त्रुटियों को समझते हैं और अपनी स्क्रिप्ट्स में उचित एरर हैंडलिंग लागू करते हैं, तो आप अपनी S3 कॉपी ऑपरेशंस को अधिक मज़बूत और विश्वसनीय बना देंगे।
AWS S3 cp का समापन
अंत में, aws s3 cp कमांड S3 पर लोकल फाइलें कॉपी करने और उसके विपरीत के लिए वन-स्टॉप समाधान है।
आपने इस लेख में इसके बारे में सब कुछ सीखा। आपने मूलभूत और एन्वायरनमेंट कॉन्फ़िगरेशन से शुरुआत की, और शेड्यूल्ड व स्वचालित स्क्रिप्ट्स लिखने तक पहुँचे। आपने फाइलें मूव करते समय—खासतौर पर बड़ी फाइलें—आने वाली आम त्रुटियों और चुनौतियों से निपटना भी सीखा।
तो, यदि आप डेवलपर, डेटा प्रोफेशनल, या सिस्टम एडमिनिस्ट्रेटर हैं, तो यह कमांड आपके काम आएगा। इसके साथ सहज होने का सबसे अच्छा तरीका है इसे नियमित रूप से उपयोग करना। सुनिश्चित करें कि आप मूलभूत बातें समझते हैं, और फिर अपने काम के उबाऊ हिस्सों को ऑटोमेट करने में थोड़ा समय लगाएँ।
AWS के बारे में और सीखने के लिए, DataCamp के ये कोर्स देखें:
आप AWS सर्टिफिकेशन परीक्षाओं की तैयारी के लिए DataCamp का उपयोग भी कर सकते हैं - AWS Cloud Practitioner (CLF-C02)।
FAQs
aws s3 cp कमांड क्या है, और इसका उपयोग किस लिए किया जा सकता है?
aws s3 cp कमांड AWS Command Line Interface के भीतर एक यूटिलिटी है जो आपको आपके लोकल सिस्टम और Amazon S3 स्टोरेज के बीच फाइलें कॉपी करने देती है। इसका डिजाइन मानक Linux cp कमांड जैसा परिचित कमांड-लाइन अनुभव देने के लिए किया गया है, लेकिन S3 बकेट्स के साथ इंटरैक्ट करने के लिए अनुकूलित है। आप इसका उपयोग द्विदिश ट्रांसफर, पूरी डायरेक्टरी संरचना की रिकर्सिव कॉपी, पैटर्न के आधार पर फाइल फ़िल्टरिंग, और लागत अनुकूलन के लिए अलग-अलग स्टोरेज क्लास निर्दिष्ट करने के लिए कर सकते हैं। यह विशेष रूप से DevOps इंजीनियर्स, डेटा साइंटिस्ट्स, और सिस्टम एडमिनिस्ट्रेटर्स के लिए उपयोगी है जिन्हें S3 बकेट्स में डेटा कुशलतापूर्वक प्रबंधित करना होता है।
aws s3 cp कमांड का उपयोग करने के लिए AWS CLI कैसे सेट अप करूँ?
aws s3 cp कमांड का उपयोग करने के लिए AWS CLI सेट अप करने में आपके सिस्टम पर AWS CLI इंस्टॉल करना, उसे आपके AWS क्रेडेंशियल्स से कॉन्फ़िगर करना, और एक S3 बकेट बनाना शामिल है। इंस्टॉलेशन प्रक्रिया आपके ऑपरेटिंग सिस्टम (Windows, Linux, या macOS) के अनुसार थोड़ी बदलती है। इंस्टॉलेशन के बाद, आपको aws configure कमांड चलानी होगी और अपनी Access key ID, Secret access key, डिफ़ॉल्ट रीजन, और पसंदीदा आउटपुट फॉर्मैट प्रदान करना होगा। अंत में, आपको AWS Management Console के जरिए या सीधे AWS CLI का उपयोग करके S3 बकेट बनाना होगा।
aws s3 cp के बेसिक सिंटैक्स और आम उपयोग मामले क्या हैं?
aws s3 cp का बेसिक सिंटैक्स है aws s3 cp <source> <destination> [options], जहाँ सोर्स और डेस्टिनेशन लोकल फाइल पाथ या S3 URI (जो s3:// से शुरू होते हैं) हो सकते हैं। आम उपयोग मामलों में आपके लोकल सिस्टम से S3 पर फाइल अपलोड करना, S3 से आपके लोकल सिस्टम पर फाइल डाउनलोड करना, और --recursive फ्लैग का उपयोग करके पूरी डायरेक्टरीज़ को रिकर्सिवली कॉपी करना शामिल है। आप कमांड का उपयोग अलग-अलग S3 बकेट्स के बीच फाइलें कॉपी करने, डेस्टिनेशन फाइलों के लिए अलग नाम निर्दिष्ट करने, और अपने बकेट्स के भीतर नेस्टेड "फोल्डर" संरचनाओं में फाइलें व्यवस्थित करने के लिए भी कर सकते हैं।
विशिष्ट फाइलों को फ़िल्टर करने के लिए --exclude और --include फ्लैग्स का उपयोग कैसे करूँ?
--exclude और --include फ्लैग्स आपको aws s3 cp का उपयोग करते समय पैटर्न के आधार पर फाइलें फ़िल्टर करने देते हैं, जिससे आपको कॉपी होने वाली चीज़ों पर सटीक नियंत्रण मिलता है। उदाहरण के लिए, आप किसी डायरेक्टरी से सभी फाइलें कॉपी कर सकते हैं, सिवाय उन फाइलों के जिनके पास खास एक्सटेंशन हैं (जैसे --exclude "*.log"), या आप केवल विशिष्ट फाइल प्रकारों को टार्गेट कर सकते हैं (जैसे --exclude "*" के बाद --include "*.html" --include "*.css")। इन फ्लैग्स का क्रम अत्यंत महत्वपूर्ण है क्योंकि AWS CLI इन्हें क्रमवार प्रोसेस करता है। इससे जटिल फाइल ट्रांसफर परिदृश्यों के लिए परिष्कृत फ़िल्टरिंग नियम बनाना संभव होता है।
--exact-timestamps के साथ aws s3 cp और aws s3 sync में क्या अंतर है?
दोनों कमांड्स S3 में फाइलों को अपडेट करने के लिए उपयोग की जा सकती हैं, लेकिन उनके उद्देश्य और व्यवहार अलग हैं। --exact-timestamps फ्लैग के साथ aws s3 cp केवल तभी फाइलें कॉपी करेगा जब उनके टाइमस्टैम्प्स S3 में मौजूद फाइलों से अलग हों, जो फाइलें अपडेट करते समय ट्रांसफर समय और बैंडविड्थ उपयोग को कम कर सकता है। हालाँकि, aws s3 sync विशेष रूप से डायरेक्टरीज़ को सिंक में रखने के लिए डिज़ाइन किया गया है और अधिक परिष्कृत सिंक्रोनाइज़ेशन क्षमताएँ प्रदान करता है। यदि आपको नियमित रूप से बड़े सेट की फाइलें अपडेट करनी हैं और केवल बदली हुई चीज़ों को ही ट्रांसफर करना है, तो aws s3 sync आमतौर पर बेहतर विकल्प है, हालांकि सरल सिंक्रोनाइज़ेशन जरूरतों के लिए --exact-timestamps के साथ aws s3 cp भी काम कर सकता है।
