2015-06-02 25 views
9

aws s3 sync --delete में नई फ़ाइलों को हटा दिया गया कुछ नई फाइलें हटा दी गईं।एडब्ल्यूएस एस 3 सिंक - डिलीट, स्थानीय

उदाहरण के लिए: - 1.jpg और 2.jpg: 2.jpg

सर्वर में 2 फ़ाइलें हैं

बाल्टी में एक फ़ाइल नहीं है S3://my-bucket/images/1.jpg

फिर, मैं सर्वर से फ़ाइल अपलोड

सिंक cronjob चलाने शुरू करें:

aws s3 sync s3://my-bucket/ ./ --delete 
aws s3 sync ./ s3://my-bucket/ --delete 

हम --delete क्यों जोड़ते हैं - हम एस 3 में फ़ाइलों को हटाना चाहते हैं और इसे सर्वर से सिंक करना चाहते हैं।

हम सर्वर पर फ़ाइलों को अपलोड करेंगे और एस 3 में फ़ाइलों को हटा देंगे।

क्या इसे ठीक करने का कोई तरीका है?

उत्तर

13

डिफ़ॉल्ट रूप से, aws sync कमांड फ़ाइलें हटा नहीं देता है। यह बस गंतव्य पर नई या संशोधित फाइलों की प्रतिलिपि बनाता है।

--delete विकल्प का उपयोग गंतव्य में मौजूद फ़ाइलों को हटा देता है लेकिन स्रोत में नहीं।

तो, अपने स्रोत शामिल है: 1.jpg और 2.jpg और गंतव्य 1.jpg, 2.jpg और 3.jpg होता है, तो --delete विकल्प गंतव्य से 3.jpg को नष्ट करेगा का उपयोग कर।

मुझे लगता है कि आप दोनों दिशाओं में sync कमांड चला रहे हैं। आपका पहला कमांड (जो एस 3 को स्थानीय निर्देशिका में सिंक करता है) एस 3 में मौजूद किसी भी स्थानीय फाइल को हटा देगा।

अपने लक्ष्य को किसी भी फाइल को हटाए बिना, स्थानीय निर्देशिका के लिए S3 के लिए सभी स्थानीय फ़ाइलों और सभी S3 फ़ाइलों की प्रतिलिपि बनाना है, तो --delete विकल्प प्रयोग नहीं करते।

+0

हाय, मेरा लक्ष्य एस 3 बाल्टी में कुछ पुरानी फाइलों को हटाना है, फिर मैं उस कमांड को --delete के साथ चलाता हूं और मैं इसे अपनी स्थानीय फाइलों को भी हटाना चाहता हूं। और फिर मैं aws s3 सिंक कमांड के साथ स्थानीय से s3 तक कुछ नई फ़ाइलें अपलोड कर सकता हूं। क्या यह करना मुमकिन है? –

+2

हां, आप यह कर सकते हैं। बस जागरूक रहें कि '--delete' उस गंतव्य में फ़ाइलों को हटा देगा जो स्रोत में नहीं हैं। तो, केवल इसे "मास्टर" स्थान से उपयोग करें। यह "स्थानीय" (स्रोत) स्थान से फ़ाइलों को नहीं हटाएगा। वांछित व्यवहार प्राप्त करने के लिए आदेशों को चलाने के क्रम में बस खेलें। –

संबंधित मुद्दे