मैं फ़ाइलों को जगह में कैसे संपीड़ित करूं?


20

मेरे पास 90% हार्ड-डिस्क उपयोग के साथ एक मशीन है। मैं इसकी 500+ लॉग फ़ाइलों को एक छोटी नई फ़ाइल में संपीड़ित करना चाहता हूं। हालाँकि, हार्ड डिस्क बहुत ही छोटी है, जो मूल फाइलों और संपीड़ित दोनों को बनाए रखने के लिए है।

इसलिए मुझे जो चाहिए वह है कि एक-एक करके सभी मूल फाइलों को एक-एक करके एक-एक करके नई फाइल में एक-एक कर हटा दिया जाए।

मैं लिनक्स में ऐसा कैसे कर सकता हूं?


डुप्लिकेट: superuser.com/questions/378230
हरमन

जवाबों:


18

gzipया bzip2फ़ाइल को संपीड़ित करेगा और गैर-संपीड़ित स्वचालित रूप से हटा देगा (यह उनका डिफ़ॉल्ट व्यवहार है)।

हालाँकि, ध्यान रखें कि कंप्रेसिंग प्रक्रिया के दौरान, दोनों फाइलें मौजूद रहेंगी।

यदि आप लॉग फ़ाइलों (यानी: पाठ युक्त फ़ाइलें) को संपीड़ित करना चाहते हैं, तो आप पसंद कर सकते हैं bzip2, क्योंकि इसमें पाठ फ़ाइलों के लिए बेहतर अनुपात है।

bzip2 -9 myfile       # will produce myfile.bz2

तुलना और उदाहरण:

$ ls -l myfile
-rw-rw-r-- 1 apaul apaul 585999 29 april 10:09 myfile

$ bzip2 -9 myfile

$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 115780 29 april 10:09 myfile.bz2

$ bunzip2 myfile.bz2

$ gzip -9 myfile

$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 146234 29 april 10:09 myfile.gz

UPDATE जैसा कि @ जोजाओ ने मुझे एक टिप्पणी में बताया, दिलचस्प रूप से, xzइसके डिफ़ॉल्ट विकल्पों के साथ सादे फ़ाइलों पर सबसे अच्छा अनुपात है:

$ xz -9 myfile

$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 109384 29 april 10:09 myfile.xz

अधिक जानकारी के लिए, विभिन्न उपकरणों के लिए यहां एक दिलचस्प बेंचमार्क है: http://binfalse.de/2011/04/04/comparison-of-compression/

ऊपर दिए गए उदाहरण के लिए, मैं -9एक सर्वोत्तम संपीड़न अनुपात के लिए उपयोग करता हूं , लेकिन यदि डेटा को संपीड़ित करने के लिए आवश्यक समय अनुपात से अधिक महत्वपूर्ण है, तो आप इसका बेहतर उपयोग नहीं करेंगे (कम विकल्प का उपयोग करें, अर्थात -1, या बीच में कुछ)।


2
+1; बस जिज्ञासु: आप एक जोड़ सकते हैं xz myfile?
जजॉओ

2
@ जोजो धन्यवाद! यह दिलचस्प है, मैं उपयोग करने के लिए अभ्यस्त नहीं हूं xz, लेकिन मैं अब इस पर विचार करूंगा। मेरी पोस्ट का अपडेट देखें।
आपौल

3
कृपया मत करो xz -9। यह संपीड़न अनुपात / अपघटन के लिए आवश्यक मेमोरी को बहुत बढ़ा देता है, बिना संपीड़न अनुपात में सुधार के। मैनपेज यहां तक ​​कहता है (उनका जोर) "विशेष रूप से, यह आँख बंद करके -9 का उपयोग करने के लिए एक अच्छा विचार नहीं है क्योंकि यह अक्सर gzip (1) और bzip2 (1)" के साथ होता है। डिफ़ॉल्ट xz -6पर्याप्त रूप से अच्छा है, और यहां तक ​​कि xz -0/ xz -1आमतौर पर तुलना में बेहतर है gzip -9
user49740

@ user49740 आप सही हैं। मैं शायद ही कभी उपयोग करता हूं -9, लेकिन मैंने इसका इस्तेमाल तब से किया जब से मैं "समान पैमाने पर" संपीड़न अनुपात के लिए किसी तरह का बेंचमार्क बनाना चाहता था। लेकिन एक बार फिर, आप पूरी तरह से सही हैं: यह आँख बंद करके उपयोग करने के लिए एक बुरा विचार है -9
आपौल

15

मैंने अपने द्वारा एक टार समाधान निकाला।
यह एकल फ़ाइल को लक्ष्य फ़ाइल में संपीड़ित करने के बाद हटा देता है।
हालांकि कंप्रेसिंग स्पीड काफी तेज नहीं है। कमांड ऐसा दिखता है:

tar -zcvf my_log.tar.gz *.log --remove-files

1
अच्छा 'ओल टार। +1
आरोन हॉल

1

@ पापुल के पूरक में, मैं व्यक्तिगत रूप से उस कंप्रेसिंग फ़ाइलों पर जोर देता हूं

 bzip2 *.log.*

(bzip2 को gzip, xz से बदलें, या कभी आपकी पसंदीदा फ़ाइल ज़िप क्या है) महत्वपूर्ण हो सकता है:

इस तरह से आप अभी भी देख सकते हैं ( bzcat file.bz2), खोज ( bzgrep file.bz2), संपादित करें ( vi file.bz2) संपीड़ित फ़ाइल को संपादित करें और जब आवश्यक हो तो पुराने को हटा दें।


1

मैं टार के बीएसडी-संस्करण पर यह करने की कोशिश कर रहा था। इस स्थिति में, --remove-files विकल्प उपलब्ध नहीं है। जो मैंने किया (और काम किया) वह था:

find folder_to_tar -type f -exec tar --append --file=output_tar_file.tar {} \; -exec rm -v {} \;

वैसे, BSD संस्करण वह है जो आप डिफ़ॉल्ट रूप से प्राप्त करते हैं यदि आप MacOS का उपयोग करते हैं
pgilmon
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.