बैश स्क्रिप्ट बैकअप और निर्देशिका संरचना को पुनर्स्थापित करने के लिए


-1

मूल रूप से मेरे पास लिनक्स में यह निर्देशिका संरचना है।

Backup
 Dir_1 
     Sub_Dir_1
          file_1  90 GB
          file_2  10 GB
     Sub_Dir_2
          file_1  20 GB

Restore
 Dir_1
     Sub_Dir_1
         file_1 0 bytes
         file_2 0 bytes
     Sub_Dir_2
         file_1 0 bytes

और सूची खत्म ही नहीं होती।
मैं पूरी डायरेक्टरी को टारगेट कर सकता हूं लेकिन प्रत्येक सब डाइरेक्टरी के अंदर फाइलों के फाइल साइज के कारण इसमें थोड़ा समय लगेगा।

मैं जो चाहता हूं वह एक स्क्रिप्ट तैयार करना है जो पूरी निर्देशिका संरचना का बैकअप लेगा और विभिन्न कंप्यूटर पर एक ही निर्देशिका को पुनर्स्थापित करने में सक्षम होगा लेकिन उप निर्देशिका के अंदर सभी फाइलों को शून्य से बाहर कर देगा।
मुझे बस उनकी निर्देशिका का नाम और फ़ाइल नाम चाहिए। क्या यह संभव है?


SuperUser पर आपका स्वागत है। एक मिनट पढ़ने के लिए कैसे पूछें , और शायद प्रश्न को प्रारूपित करने का तरीका, ताकि आप लोगों को बेहतर उत्तर देने में मदद कर सकें। आपकी निर्देशिका संरचना कितनी जटिल है, और कौन सी फाइलों की संख्या है (1 10 100 1000 1000 10000 ... 1M)? आप ऐसा कर सकते हैं संपादित करें सवाल पूरा करने के लिए आपका पोस्ट।
Hastur

एक महत्वपूर्ण अंतर है यदि आपको टाइमस्टैम्प स्वामित्व और प्रत्येक फ़ाइल / निर्देशिका के लिए विशेषताओं को संरक्षित करने की आवश्यकता है या नहीं।
Hastur

एक वर्कअराउंड लेकिन यदि आप एक बड़ा लिनक्स बैश करते हैं तो आप खिड़कियों पर साइबरविन स्थापित कर सकते हैं और इसे करने के लिए एक लिनक्स बैश स्क्रिप्ट लिख सकते हैं
barlop

@barlop मुझे लगता है कि वह पहले से ही लिनक्स के तहत है ...
Hastur

@oLiVeR: ... और इतना? क्या आपने समाधान की कोशिश की? क्या यह आपके लिए काम किया? कुछ प्रतिक्रिया दें।
Hastur

जवाबों:


0

उप-समस्या में विभाजित करें

सामान्य तौर पर जब आप अपनी समस्या का तेजी से पूरा हल नहीं खोज पाते हैं तो आप इसे उप-समस्याओं में विभाजित कर सकते हैं जिन्हें हल करना आसान होता है।

  • एक रास्ता बनाना है tar निर्देशिका संरचना की फ़ाइल और ए list of files निर्देशिका संरचना के अंदर छुआ जाना जिसे आप बाद में संपीड़ित कर सकते हैं। आपको पूरी निर्देशिका संरचना बनाने की आवश्यकता नहीं है और आपके पास केवल दो फाइलें होंगी।
    उसके साथ touch आदेश [ 1 ] आप किसी फ़ाइल के संशोधन समय को अपडेट कर सकते हैं, और यदि मौजूद नहीं है तो आप एक खाली बनाएंगे ( ! )। आपके द्वारा निर्देशिका संरचना की प्रतिलिपि बनाने के बाद आप कर सकते हैं स्पर्श अंदर फाइलें।

    यह स्क्रिप्ट आपकी वर्तमान निर्देशिका में फ़ाइलें (टार + txt) बना सकती है।

    #!/bin/bash
    HomeDir=$(pwd)
    BackupDIR="Backup"      # Change here
    
    TarFileName="$HomeDir/Directory_Structure.tar"
    ListFileName="$HomeDir/File_List.txt"
    
    cd "$BackupDIR"
    
    tar -cf "$TarFileName"  --no-recursion --files-from <(find . -type d)
    find . -type f -exec echo touch \"{}\" \; > "$ListFileName"
    gzip --best "$ListFileName" "$TarFileName"    # this to compress them
    

    फिर उन्हें पुनर्स्थापित निर्देशिका से अपनी दो फ़ाइलों के साथ निकालने के लिए आप अंदर लिख सकते हैं

    tar -zxf Directory_Structure.tar.gz
    zcat File_List.txt.gz | /bin/bash
    

    ध्यान दें कि ऐसी मान्यताएँ हैं जिनका आप निर्माण समय, स्वामित्व और फाइलों की विशेषताओं की परवाह नहीं करते हैं, कि आपके नाम पैथोलॉजिकल नहीं हैं, आपके पास कोई लिंक नहीं है ...

  • एक और तरीका है एक बनाने के लिए निर्देशिका और संरचना की स्थानीय प्रति । उसके बाद फिर से आप निर्देशिका संरचना की प्रतिलिपि बना सकते हैं स्पर्श अंदर फाइलें।
    फिर आप सभी के साथ बैकअप कर सकते हैं tar

    नुकसान क्या वह मूल रचना है & amp; संशोधन के समय, स्वामित्व और विशेषताएँ खो जाएँगी। यदि आवश्यक हो तो आपको मैन्युअल रूप से डालना होगा, और यह आपकी स्क्रिप्ट को जटिल करेगा। ( touch -d "$(date -R -r filename)" Restore/filename...)
    यदि आपके पास आरामदायक नहीं है तो आपको बहुत सारे इनोड की आवश्यकता होगी zillions फाइलें।

    एक अच्छी बात यह है कि आप स्थानीय निर्देशिका संरचना की प्रतिलिपि एक बुद्धिमान तरीके से बना सकते हैं (के माध्यम से) tar या rsync उदाहरण के लिए; सही विकल्पों के साथ यह सभी कुछ विकृति विज्ञान की देखभाल भी करेगा)।

  • पिछले नहीं बल्कि कम से कम कुछ का उपयोग करने के लिए है अजगर के लिए टारफाइल मॉड्यूल [ 2 ] अपनी टार फ़ाइल बनाने के लिए, प्रत्येक प्रकार (फ़ाइल और डायरेक्टरी को अलग तरीके से प्रबंधित करना): साहसी बनें!

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