सवाल मैं बैश में हाल ही में संशोधित फ़ाइलों का बैकअप कैसे बना सकता हूं?


मैंने इस बैकअप स्क्रिप्ट को लिखा है जो एक फाइल में दिखता है और हाल ही की फाइलों को एक फ़ोल्डर में कॉपी करता है।

#!/usr/bin/bash

# the number of days to do the backup for.
days=2;

# the files to backup.
location[0]='/opt/location'

# the location to copy the file to
copyLocation='/users/me/Backup/firstBackupScriptTry'

# preform the back up
for i in ${location[*]}
do
        find $i \! -name '*.class' -mtime -$days \! -type d -exec cp {} $copyLocation \;
done

यह काम करता है लेकिन यह उपयोगी नहीं है।

जब मैं कॉपी करता हूं तो निर्देशिका संरचना को संरक्षित करने के लिए स्क्रिप्ट पसंद करूंगा। मैं इसे करना चाहता हूं: cp -r from to लेकिन केवल हाल की फाइलों की प्रतिलिपि बनाएँ।


2
2018-02-10 18:33


मूल




जवाब:


खोजने के दौरान मिलने वाले फ़ाइल नामों को संशोधित करने का एक तरीका होगा। तो अपने लूप में, $ फ़ाइल नाम में एक मिलान फ़ाइल नाम होने पर आप यह करेंगे:

  1. $ फ़ाइल नाम में, कुछ भी नहीं के साथ अग्रणी $ i को प्रतिस्थापित करें
  2. उपयोग करके 1 के परिणाम में $ dir_name का पता लगाएं dirname
  3. एक पीछे $ copyLocation $ dirname में संलग्न करें और इसके लिए तर्क के रूप में उपयोग करें mkdir -p लापता निर्देशिका बनाने के लिए
  4. "$ copyLocation / $ dirname" पर $ filename की प्रतिलिपि बनाएँ

मैं अभी भी एक और फ़ाइल सिंक विकल्प का सुझाव देने जा रहा हूं: सामंजस्य। Rsync से उपयोग करना आसान है।


1
2018-02-10 20:08





rsync इस काम के लिए बनाया गया है। चेक उदाहरण उपयोग के लिए पेज।


6
2018-02-10 18:59



+1: सहायक उत्तर। मैं शायद इसका उपयोग कर समाप्त कर दूंगा, बहुत अच्छा लग रहा है। हालांकि मैं उत्सुक हूं कि मेरी स्क्रिप्ट कैसे खत्म करें। कोई विचार? - sixtyfootersdude
rsync -a - शामिल करें "/ "- शामिल = =.class '--exclude = "*" / opt / location / / users / me / बैकअप / firstBackupScriptTry - Justin Smith
जो कहने के लिए है कि एक पंक्ति आपकी पूरी स्क्रिप्ट को डुप्लिकेट करती है (पिछले दो दिनों में परिवर्तनों की प्रतिलिपि बनाने की बजाय, यह उसी स्थान पर अंतिम बैकअप के बाद से सभी परिवर्तनों की प्रतिलिपि बनाता है) - Justin Smith
चूंकि ऐसा लगता है कि आप कोड का बैक अप ले रहे हैं, तो आपको भी विचार करना चाहिए -C rsync के लिए विकल्प जिसमें सीवीएस / एसवीएन रिपोजिटरी मेटा फाइल, बैकअप फाइलें और संकलित फाइलें शामिल हैं। - Doug Harris
कमांड लाइन @doug मैंने केवल प्रतियां पोस्ट की हैं। क्लास फाइलें और निर्देशिकाएं, कुछ भी नहीं, जैसा कि उनके मूल में निर्दिष्ट किया गया था। लेकिन कम picky बैकअप के लिए, -सी निश्चित रूप से सहायक है। - Justin Smith


शायद थोड़ा सा विषय, लेकिन आप एक नज़र रखना चाहते हैं BoxBackup। मैंने BoxBackup पर जाने से पहले लंबे समय तक rsync स्क्रिप्ट का उपयोग किया, और यह वास्तव में चीजों को आसान बनाता है - खासकर "हाउसकीपिंग" ...


1
2018-02-10 19:26



हम्म, सूचक के लिए धन्यवाद। उपयोगी दिखता है लेकिन बिल्कुल नहीं जो मैं ढूंढ रहा हूं। कोई भी विचार है कि मेरी स्क्रिप्ट को कैसे ठीक / खत्म करें? - sixtyfootersdude