मैं सुरक्षित और अधिक, बहुत तेज़ दृष्टिकोण के लिए गया क्योंकि मेरे पास सूची में 18.000 फाइलें थीं! मुझे एक बड़े ड्रुपल इंस्टॉलेशन में छवियों को साफ करने की आवश्यकता थी।
सूची में नहीं हैं सभी फ़ाइलों को हटाना केवल उन लोगों को रखने के समान है जो सूची में हैं। इसलिए मैंने वास्तव में सूची से फ़ाइलों को किसी अन्य स्थान पर कॉपी करने का निर्णय लिया, लेकिन 20 जीबी की फ़ाइलों की प्रतिलिपि बनाने में बहुत अधिक जगह होगी और साथ ही बहुत धीमी गति से होगी। तो ट्रिक hardlinks
इसके -l
विकल्प के रूप में फाइलों को कॉपी करने की है cp
। यह लगभग कोई जगह नहीं लेता है और बहुत तेज है। इसके अतिरिक्त, चूंकि मुझे निर्देशिका संरचना को संरक्षित करने की आवश्यकता थी, इसलिए मैंने --parents
विकल्प का उपयोग किया ।
यहाँ मेरी फ़ाइल सूची से एक अंश है:
1px.png
misc/feed.png
modules/file/icons/x-office-presentation.png
modules/file/icons/x-office-spreadsheet.png
newsletter.png
sites/all/libraries/ckeditor/plugins/smiley/images/devil_smile.png
sites/all/libraries/ckeditor/plugins/smiley/images/regular_smile.png
sites/default/files/009313_PwC_banner_CBS_Observer_180x246px.jpg
तो एक उदाहरण पंक्ति होगी, अस्थायी गंतव्य होने के साथ:
cp -l --parents 'misc/feed.png' temp
यह इस संरचना का निर्माण करेगा:
temp
misc
feed.png
ध्यान दें कि डेस्टिनेटन को उसी फाइल सिस्टम में होना चाहिए जो हार्डलिंक के काम करने के स्रोत के रूप में हो।
अगला कदम स्क्रिप्ट का निर्माण करना है:
sed -e "s,^,cp -l --parents '," -e "s,$,' /some/where/temp," filelist > newfilelist
अब, मान लें कि आपने पहले से ही खाली dir / कुछ / जहाँ / temp बनाया है, आप फ़ाइलों को इस तरह से कॉपी कर सकते हैं:
sh newfilelist 2> missing_files
ध्यान दें कि त्रुटियों का अंत कैसे होता है missing_files
। इस दृष्टिकोण का जोड़ा बोनस यह है कि आपको मूल सूची से फ़ाइलों की एक सूची मिलेगी जो वास्तव में मौजूद नहीं है!
स्क्रिप्ट चलाने के बाद, अस्थायी में केवल वे फ़ाइलें होंगी जो फ़ाइल सूची में हैं, लेकिन बिना कुछ हटाए और बिना अतिरिक्त स्थान उठाए। यदि आप परिणाम से संतुष्ट हैं, तो आप सबफ़ोल्डर सहित सभी मूल फ़ाइलों को हटा सकते हैं।
अंत में, अस्थायी स्थान पर फ़ाइलों और फ़ोल्डरों को मूल स्थान पर वापस ले जाएं।
18.000 फ़ाइलों के लिए इसमें केवल कुछ सेकंड लगते हैं।