सबसे तेज़ तरीका कई फ़ाइलों को एक में जोड़ता है (टार czf बहुत धीमा है)


23

वर्तमान में मैं tar czfबैकअप फ़ाइलों को संयोजित करने के लिए चल रहा हूं । फाइलें एक विशिष्ट निर्देशिका में हैं।

लेकिन फाइलों की संख्या बढ़ रही है। उपयोग करने tzr czfमें बहुत अधिक समय (20 मिनट से अधिक और गिनती) लगता है।

मुझे फ़ाइलों को अधिक तेज़ी से और स्केलेबल तरीके से संयोजित करने की आवश्यकता है।

मैंने पाया है genisoimage, readomऔर mkisofs। लेकिन मुझे नहीं पता कि उनमें से प्रत्येक के लिए सबसे तेज़ और कौन सी सीमाएँ हैं।


मुझे संदेह है कि tarकिसी भी महत्वपूर्ण ओवरहेड का परिचय, फाइलों को पढ़ना यहां महंगा ऑपरेशन है। आपको या तो अपनी फ़ाइलों को संग्रहीत करने के तरीके को संशोधित करना चाहिए, या मौलिक रूप से भिन्न दृष्टिकोण का उपयोग करना चाहिए (एक पूरे के रूप में फाइल सिस्टम को कॉपी करें)। हम आपकी फ़ाइलों को व्यवस्थित किए बिना यह जानने में आपकी बहुत मदद नहीं कर सकते।
गिल्स एसओ- बुराई को रोकना '

5
"एफएटाइम" विकल्प के साथ अपने एफएस को माउंट करें, शायद आईओ संचालन को गति दें।
रफू एल मगूफो

2
Noatime के लिए +1, यह वास्तव में एक महत्वपूर्ण अंतर बनाता है। विशेष रूप से नियमित हार्ड ड्राइव के लिए, और सिर्फ बाहरी लिखने को कम करने के लिए भी।
जेएम बेकर

जवाबों:


25

आपको यह जांचना चाहिए कि आपका अधिकांश समय सीपीयू पर या आई / ओ में खर्च हो रहा है या नहीं। किसी भी तरह से, इसे सुधारने के तरीके हैं:

एक: संपीड़ित नहीं है

आपने अपनी आवश्यकताओं की सूची में "संपीड़न" का उल्लेख नहीं किया है इसलिए अपनी तर्क सूची से "z" छोड़ने का प्रयास करें tar cf:। यह चीजों को थोड़ा तेज कर सकता है।

इस प्रक्रिया को गति देने के लिए अन्य तकनीकें हैं, जैसे "-N" का उपयोग करके उन फ़ाइलों को छोड़ना जो आप पहले ही बैकअप कर चुके हैं।

बी: dd के साथ पूरे विभाजन का बैकअप लें

वैकल्पिक रूप से, यदि आप संपूर्ण विभाजन का समर्थन कर रहे हैं, तो इसके बजाय संपूर्ण डिस्क छवि की एक प्रति लें। यह प्रसंस्करण और बहुत सारे डिस्क हेड की तलाश में समय की बचत करेगा । tarऔर उच्च स्तर पर काम करने वाले किसी भी अन्य प्रोग्राम में निर्देशिका प्रविष्टियों को पढ़ने और प्रोसेस करने के लिए एक ओवरहेड होता है और यह पता लगाने के लिए कि फ़ाइल सामग्री कहाँ है और अधिक हेड डिस्क ढूंढने के लिए , डिस्क से अलग स्थान से प्रत्येक फ़ाइल को पढ़ना है।

अंतर्निहित डेटा को बहुत तेज़ी से बैकअप करने के लिए, उपयोग करें:

dd bs=16M if=/dev/sda1 of=/another/filesystem

(यह मानता है कि आप RAID का उपयोग नहीं कर रहे हैं, जिससे चीजें थोड़ी बदल सकती हैं)


2
संपीड़ित न करें : या pigzएक से अधिक प्रोसेसर में मौजूद सिस्टम का उपयोग करें ।
रफू एल मगूफो

LZ4 / zstd और इसी तरह तेजी से संपीड़न एल्गोरिदम अभी भी जांच के लायक हो सकता है कि क्या वे कम डेटा लिखकर एक प्रक्रिया को गति दे सकते हैं (यदि डेटा बिल्कुल संकुचित है), जबकि संपीड़न में तेजी का क्रम होने के बावजूद कम दक्षता पर निर्भर करता है स्तर और एल्गोरिथ्म, मैन गज़िप भी कहता है "डिफ़ॉल्ट संपीड़न स्तर -6 है", इसलिए इसमें सुधार की गुंजाइश है।
LiveWireBT

8

दूसरों ने जो भी कहा है उसे दोहराने के लिए: हमें उन फ़ाइलों के बारे में अधिक जानने की जरूरत है, जिनका बैकअप लिया जा रहा है। मैं यहाँ कुछ मान्यताओं के साथ जाऊँगा।

टार फाइल में अप्लाई करें

यदि फ़ाइलें केवल निर्देशिकाओं में जोड़ी जा रही हैं (अर्थात, कोई फ़ाइल नहीं हटाई जा रही है), सुनिश्चित करें कि आप मौजूदा टार फ़ाइल को हर बार फिर से बनाने के बजाय उसे जोड़ रहे हैं। आप इसे tarएक नए (या पुराने को हटाने) के बजाय अपने आदेश में मौजूदा संग्रह फ़ाइल नाम निर्दिष्ट करके कर सकते हैं ।

एक अलग डिस्क पर लिखें

उसी डिस्क से पढ़ना जो आप लिख रहे हैं, प्रदर्शन को मार सकता है। I / O लोड को फैलाने के लिए किसी भिन्न डिस्क पर लिखने का प्रयास करें। यदि संग्रह फ़ाइल को मूल फ़ाइलों के समान डिस्क पर होना चाहिए, तो इसे बाद में स्थानांतरित करें।

सेक मत करो

बस जो दोहरा रहा है @ यवस ने कहा। यदि आपकी बैकअप फ़ाइलें पहले से ही संपीड़ित हैं, तो फिर से संपीड़ित करने की बहुत आवश्यकता नहीं है। आप बस CPU चक्र बर्बाद कर रहे हैं।


4

जैसे lz4 crompression के साथ टार का उपयोग करना

tar cvf - myFolder | lz4 > myFolder.tar.lz4

आपको दोनों दुनिया के सर्वश्रेष्ठ (बल्कि अच्छा संपीड़न और गति) देता है। यदि आपके डेटा में बाइनरी फ़ाइलें हैं, तो भी लगभग 3 के संपीड़न अनुपात की अपेक्षा करें।

आगे पढ़ने: संपीड़न एल्गोरिदम की तुलना lz4 के साथ कैसे टार करें


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

2

मुझे आश्चर्य है कि कोई भी डंप और पुनर्स्थापना का उल्लेख नहीं करता है। यदि आप फ़ाइल सिस्टम में खाली स्थान रखते हैं तो यह dd की तुलना में बहुत तेज़ होगा ।

ध्यान दें कि विचाराधीन फाइल सिस्टम के आधार पर आपको विभिन्न उपकरणों की आवश्यकता हो सकती है:

  • ext2 / 3/4 - डंप और बहाल ( आरएच / डेबियन में पैकेज डंप )
  • XFS - xfsdump और xfsrestore ( आरएच / डेबियन में पैकेज xfsdump )
  • ZFS - zfs send और zfs recv
  • BTRFS - btrfs भेजते हैं और btrfs प्राप्त करते हैं

ध्यान दें कि कुछ प्रोग्राम में बिल्ट-इन कम्प्रेशन (सभी डंप को छोड़कर) नहीं है - पाइप को स्टडआउट करें और आवश्यकतानुसार पिगज़ का उपयोग करें। ;-)

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