मेरे पास बैश स्क्रिप्ट में यह बहुत ही सरल रेखा है जो सफलतापूर्वक निष्पादित होती है (यानी _data.tar
फ़ाइल का निर्माण ), सिवाय इसके कि यह उप-निर्देशिकाओं को बाहर नहीं करता है जिसे --exclude
विकल्प के माध्यम से बाहर रखा गया है:
/bin/tar -cf /home/_data.tar --exclude='/data/sub1/*' --exclude='/data/sub2/*' --exclude='/data/sub3/*' --exclude='/data/sub4/*' --exclude='/data/sub5/*' /data
इसके बजाय, यह एक ऐसी _data.tar
फ़ाइल का उत्पादन करता है जिसमें सब कुछ / डेटा शामिल होता है, जिसमें उन उपनिर्देशिकाओं की फाइलें भी शामिल हैं जिन्हें मैं बाहर करना चाहता था।
कोई विचार क्यों? और इसे कैसे ठीक करें?
अद्यतन मैंने नीचे दिए गए पहले उत्तर में दिए गए लिंक के आधार पर अपनी टिप्पणियों को लागू किया (शीर्ष स्तर पहले, पहले बाहर करने के बाद कोई व्हाट्सएप नहीं):
/bin/tar -cf /home/_data.tar /data --exclude='/data/sub1/*' --exclude='/data/sub2/*' --exclude='/data/sub3/*' --exclude='/data/sub4/*' --exclude='/data/sub5/*'
लेकिन इससे कोई फायदा नहीं हुआ। सभी "बहिष्कृत" उप-निर्देशिका परिणामी _data.tar
फ़ाइल में मौजूद हैं ।
यह हैरान करने वाला है। चाहे यह करंट टार (GNU tar 1.23, CentOS 6.2, Linux 2.6.32 पर) या टार से व्हाट्सएप और अन्य आसान-टू-मिस टाइपोस के लिए "चरम संवेदनशीलता" में एक बग है, मैं इसे एक बग मानता हूं। अभी के लिए।
यह भयानक है : मैंने नीचे सुझाई गई अंतर्दृष्टि (कोई अनुगामी /*
) की कोशिश की और यह अभी भी उत्पादन स्क्रिप्ट में काम नहीं करता है:
/bin/tar -cf /home/_data.tar /data --exclude='/data/sub1' --exclude='/data/sub2' --exclude='/data/sub3' --exclude='/data/sub4'
मैंने जो भी कोशिश की और जो @Richard Perrin की कोशिश की उसके बीच कोई अंतर नहीं देखा जा सकता, सिवाय उद्धरणों और 2 रिक्त स्थान के अलावा। मैं यह कोशिश करने जा रहा हूं (रात की स्क्रिप्ट के लिए प्रतीक्षा करनी चाहिए कि निर्देशिका के रूप में चलाने के लिए समर्थित होना चाहिए अप विशाल है) और वापस रिपोर्ट करें।
/bin/tar -cf /home/_data.tar /data --exclude=/data/sub1 --exclude=/data/sub2 --exclude=/data/sub3 --exclude=/data/sub4
मुझे लगने लगा है कि ये सभी tar --exclude
संवेदनाएं मेरे वातावरण में कुछ नहीं हैं, लेकिन फिर ऐसा क्या हो सकता है?
इसने काम कर दिया! अंतिम भिन्नता की कोशिश की ( --exclude
परीक्षण के बीच दोहरे स्थान के बजाय कोई एकल-उद्धरण और एकल-स्थान ) परीक्षण नहीं किया गया। अजीब लेकिन स्वीकार कर रहे हैं।
अविश्वसनीय! यह पता चला है कि tar
(1.15.1) का एक पुराना संस्करण केवल तभी बाहर होगा जब शीर्ष-स्तरीय डायर कमांड लाइन पर अंतिम हो । यह संस्करण 1.23 की आवश्यकता के विपरीत है। FYI करें।