2014-10-25 14 views
5

मेरे पास जीसीएस में स्थिर स्थैतिक संपत्तियां हैं और मैं उन्हें gzipped की सेवा करना चाहता हूं (लेकिन वे संपीड़न के बिना अपलोड किए गए थे)। फ़ाइलों को डाउनलोड करने और उन्हें gzipped प्रारूप में पुनः अपलोड किए बिना संपीड़ित करने के लिए कोई तरीका है?मौजूदा फ़ाइलों पर gzip को अनुमति दें

मैंने सामग्री-एन्कोडिंग हेडर को gsutil (यानी, gsutil setmeta -h 'Content-Encoding:gzip' <some_object_uri>) के साथ सेट करने का प्रयास किया, लेकिन यह फ़ाइल पर "सेवा अनुपलब्ध" का कारण बन गया (जो मुझे लगता है कि सर्वर से फ़ाइल को अनजिप करने और विफल होने या कुछ ऐसा करने का प्रयास करने वाले सर्वर से है कि)।

उत्तर

4

उन्हें और पुनः-अपलोड डाउनलोड किए बिना वस्तुओं को संपीड़ित करने का कोई तरीका नहीं है।

हालांकि, अगर आप आप के लिए यह करने के लिए gsutil हो सकता है, और यदि आप इसे एक Google गणना इंजन से चलने वाले (GCE) वर्चुअल मशीन (वीएम), आपसे केवल बैंडविड्थ के लिए ऑपरेशन गिनती के लिए शुल्क लिया जाएगा।

इसके अलावा, setmeta के साथ सामग्री-एन्कोडिंग हेडर सेट करने के संबंध में, आप जो भी हुआ उसके बारे में आपकी व्याख्या में सही हैं। आप ऑब्जेक्ट पर मेटाडेटा सेट करते हैं ताकि यह इंगित किया जा सके कि इसमें gzip डेटा है, लेकिन सामग्री में वैध gzip स्ट्रीम नहीं है, इसलिए जब आप इसे Accept-Encoding: gzip के साथ डाउनलोड करने का प्रयास करते हैं, तो जीसीएस सेवा स्ट्रीम को डिक्रॉप करने और विफल होने का प्रयास करती है।

मैं एक GCE वी एम पर स्थानीय डिस्क के लिए बाल्टी को डाउनलोड सुझाव देंगे: फिर

gsutil cp -r gs://bucket /path/to/local/disk 

, इंगित करने के लिए जो फ़ाइल एक्सटेंशन gzip को -z विकल्प का उपयोग:

gsutil cp -z js,css,html -r /path/to/local/disk gs://bucket 
+0

हम्म, मैं अनुमान है कि मैं ऑब्जेक्ट अधिसूचना एपीआई का डाउनलोड करने के लिए लाभ उठा सकता हूं और फिर प्रत्येक बार एक gzipped फ़ाइल पुनः अपलोड कर सकता हूं (क्योंकि मैं ऐप इंजन ब्लॉबस्टोर हैंडलर के माध्यम से फ़ाइलों को स्वीकार कर रहा हूं)। –

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