तो, यह पता चला है कि "aws s3 सिंक" फ़ाइलें नहीं करता है, केवल निर्देशिकाएं। यदि आप इसे एक फ़ाइल देते हैं, तो आपको ... दिलचस्प ... व्यवहार मिलता है, क्योंकि यह किसी भी चीज का व्यवहार करता है जो आप इसे एक निर्देशिका की तरह देते हैं और उस पर एक स्लैश फेंकता है। कम से कम aws-cli/1.6.7 पायथन/2.7.5 डार्विन/13.4.0 करता है।
%% date > test.txt
%% aws s3 sync test.txt s3://bucket/test.txt
warning: Skipping file /Users/draistrick/aws/test.txt/. File does not exist.
इसलिए, यदि आप केवल -really- एक फ़ाइल सिंक करना चाहते हैं (केवल अपलोड करते हैं तो मौजूद है, और अगर चेकसम मेल खाता है) आप यह कर सकते हैं:
file="test.txt"
aws s3 sync --exclude '*' --include "$file" "$(dirname $file)" "s3://bucket/"
नोट को बाहर/क्रम में शामिल हैं - यदि आप इसे उलट देते हैं, तो इसमें कुछ भी शामिल नहीं होगा। और आपके स्रोत और पथ को उनके मिलान के आस-पास सैनिटी रखने की आवश्यकता है, इसलिए शायद $ (बेसनाम $ फ़ाइल) के लिए क्रमबद्ध है - अगर आप पूर्ण पथ का उपयोग कर रहे हैं तो शामिल करें ... aws --debug s3 सिंक आपका मित्र है यह देखने के लिए कि मूल्यांकन कैसे शामिल है।
और भूलें कि लक्ष्य एक निर्देशिका कुंजी है, फ़ाइल कुंजी नहीं।
यहाँ एक काम कर उदाहरण है:
%% file="test.txt"
%% date >> $file
%% aws s3 sync --exclude '*' --include "$file" "$(dirname $file)" "s3://bucket/"
upload: ./test.txt to s3://bucket/test.txt/test.txt
%% aws s3 sync --exclude '*' --include "$file" "$(dirname $file)" "s3://bucket/"
%% date >> $file
%% aws s3 sync --exclude '*' --include "$file" "$(dirname $file)" "s3://bucket/"
upload: ./test.txt to s3://bucket/test.txt/test.txt
(अब, अगर केवल वहाँ एडब्ल्यूएस S3 पूछने के लिए चेकसम को मान्य, ऐसा लगता है के बाद से हमेशा बहुखण्डीय शैली चेकसम करने के लिए -just- को .. ओह एक तरह से थे, हो सकता है कि कुछ - ड्रायर और कुछ आउटपुट स्क्रैपिंग और सिंक ..)
संबंधित: [जीएच -404] (https://github.com/aws/aws-cli/issues/404), [जीएच -1449] (https:/गिटहब में /github.com/aws/aws-cli/issues/1449) और [जीएच -2874] (https://github.com/aws/aws-cli/issues/2874)। – kenorb