बैकअप रास्पबेरी पाई स्वचालित रूप से वृद्धिशील बैकअप के साथ


15

इस विषय पर कुछ अलग सवाल और जवाब हैं। हालाँकि, जब मैं खोज रहा हूँ तो एक उत्तर नहीं मिल पा रहा है जिसे "विहित" माना जा सकता है या जो विभिन्न विकल्पों को एक जगह इकट्ठा करता है।

मैं अपने रास्पबेरी पाई की सामग्री का बैकअप लेना चाहूंगा, यदि आवश्यक हो, तो आसानी से और मज़बूती से पूरी बहाली के लिए।

ये सुविधाएँ आदर्श होंगी:

  • बाहरी स्थान पर रखे गए बैकअप (USB स्टिक, DAS, NAS, नेटवर्क कंप्यूटर आदि)
  • स्वचालितकरण, वृद्धिशील या शेड्यूलिंग के माध्यम से
  • बैकअप का वर्जन नंबर

एसडी कार्ड का क्लोनिंग एक लोकप्रिय समाधान लगता है, लेकिन गोल्डीलॉक्स के इस पोस्ट के अनुसार यह उचित नहीं है क्योंकि एक क्लोन में फाइलें होती हैं जो केवल रनटाइम पर लोड होती हैं, आदि।

तो मैं यह मान रहा हूं कि एक अच्छा समाधान कुछ का उपयोग करता है जैसे rsyncया शायद अधिक मजबूती से, एक उपयोगिता जो ऊपर दिए गए क्रेटा को संभाल सकती है।

मेरी विशेष स्थिति: मेरे पास एक लैन पर एक रास्पबेरी पाई है जहां मैं मैक ओएस एक्स कंप्यूटर, एक Synology DiskStation NAS या रास्पबेरी से जुड़े यूएसबी मेमोरी स्टिक का बैकअप ले सकता हूं। मैं बाद का उपयोग नहीं करना पसंद करूंगा।


उबंटू साइट पर बैकअप विकल्पों की एक लंबी सूची है (ज्यादातर गैर-उबंटू विशिष्ट) askubuntu.com/questions/2596/comparison-of-backup-tools/2903
पीज

जवाबों:


10

Rsnapshot उन मानदंडों को पूरा करता है: 1

  • स्थानीय या दूर से इस्तेमाल किया जा सकता है।

  • स्वचालित / अनुसूचित किया जा सकता है।

  • गिने वृद्धिशील बैकअप का उपयोग करता है।

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


  1. हालांकि स्पष्ट रूप से अब (2018) यह बोर्गबैक के पक्ष में अस्वीकार्य हो सकता है ।

धन्यवाद! मैं इसे इस सप्ताह के अंत में परीक्षण करूंगा और अगर यह काम करता है तो आपके उत्तर की पुष्टि करेगा।
विंटरफ्लैग्स

1
Rsnapshot का रखरखाव नहीं किया जाता है। मूल लेखक बंद का उपयोग करने के BorgBackup
lightswitch05

@ lightswitch05 जानकर अच्छा लगा!
गोल्डीलॉक्स

2

मैंने कई बैकअप तकनीकों की कोशिश की है। मैं नियमित रूप से 2 का उपयोग करता हूं।

मैं अपने मैक पर एसडी कार्ड क्लोन करता हूं और छवि को संपीड़ित करता हूं। मैं इसे एक सुरक्षा बैकअप के रूप में या डुप्लिकेट कार्ड बनाने के लिए उपयोग करता हूं। मैं मानता हूं कि यह एक आदर्श नहीं है। मेरी स्क्रिप्ट नीचे है।

अधिक बार, मैं rsyncएक कॉपी करने के लिए उपयोग करते हैं HD एक से जुड़ी पाई। देखें /raspberrypi//a/28087/8697 जानकारी के लिए।

वास्तव में मेरे पास व्हीजी, जेसी और मेट इमेज (विभिन्न निर्देशिकाओं के लिए) बैकअप के लिए थोड़े अलग संस्करण हैं।

मैंने अपने मैक को rsync करने की कोशिश की, लेकिन यह केवल आंशिक रूप से काम किया। मूलभूत समस्या यह है कि मैक और पाई पर उपयोगकर्ता मेल नहीं खाते हैं, rsyncविभिन्न प्लेटफार्मों के बीच अंतर का उल्लेख नहीं करते हैं । नवीनतम ओएस एक्स में सुरक्षा में बदलाव के साथ शायद यह और भी अधिक समस्या होगी।

मैंने एक नेटवर्क पर दूसरे का बैकअप बनाने के लिए एक पाई का सफलतापूर्वक उपयोग किया है।

मुझे नहीं पता कि यह एनएएस के लिए कैसे काम करेगा, लेकिन संदेह है कि हार्डलिंक और अनुमतियों के साथ समस्याएं हो सकती हैं।

#!/bin/bash
# script to backup Pi SD card
# 2017-06-05
# DSK='disk4'   # manual set disk
OUTDIR=~/temp/Pi
# Find disk with Linux partition (works for Raspbian)
# Modified for PINN/NOOBS
export DSK=`diskutil list | grep "Linux" | sed 's/.*\(disk[0-9]\).*/\1/' | uniq`
if [ $DSK ]; then
    echo $DSK
    echo $OUTDIR
else
    echo "Disk not found"
    exit
fi

diskutil unmountDisk /dev/$DSK
echo please wait - This takes some time
echo Ctl+T to show progress!
time sudo dd if=/dev/r$DSK bs=4m | gzip -9 > $OUTDIR/Piback.img.gz

#rename to current date
echo compressing completed - now renaming
mv -n $OUTDIR/Piback.img.gz $OUTDIR/Piback`date +%Y%m%d`.img.gz

आपका डीएएस समाधान आसानी से पाई, सही से जुड़े यूएसबी स्टिक के अनुकूल होना चाहिए? एक नेटवर्क बैकअप स्थापित करने के बारे में परेशान करने के बजाय, मैं बस USB पर rsync करने के बारे में सोच रहा हूं।
विंटरफ्लैग

2

यदि आप इन 2 तथ्यों पर विचार करते हैं तो यह आपको अन्य विकल्पों के लिए खोल देगा:

  1. आप एक ही डिवाइस को एक साथ कई डायरेक्टरी में माउंट कर सकते हैं।
  2. आप tmpfsनिर्देशिका बनाने के लिए कहीं भी माउंट बना सकते हैं ।

तो, हाँ ऐसे कई रास्ते हैं जिनका आप बैकअप नहीं लेना चाहते हैं। आप अपने प्राथमिक विभाजन को दूसरी निर्देशिका में बढ़ते हुए उनमें से अधिकांश से बचते हैं। अन्य लोग अभी भी तरह बैकअप के लिए डेटा आप नहीं चाहते होगा /tmp, /dev, और /var/log

मेरी प्रक्रिया इस तरह से हुई ...

  1. रास्पबेरी पाई में एसएसएच
  2. माउंट वास्तव में मैं बैकअप लेना चाहता था

    sudo mount                     /dev/mmcblk0p2    /tmp/root/
    sudo mount -t tmpfs -o size=1m tmpfs             /tmp/root/var/log/
    sudo mount -t tmpfs -o size=1m tmpfs             /tmp/root/dev/
    sudo mount -t tmpfs -o size=1m tmpfs             /tmp/root/tmp/
    sudo mount                     /dev/mmcblk0p1    /tmp/root/boot/
    
  3. मशीन से बाहर निकलें
  4. डेटा को ssh + tar के माध्यम से कॉपी करें

    ssh pi@raspberry.local 'cd /tmp/root; sudo tar cf - * | gzip;' | pv > rpi.tgz
    # NOTE: The `pv` command gives you a progress meter but can be left out.
    
  5. अस्थायी आरोह निकालें

    for m in /var/log/ /dev/ /boot/ /; do sudo umount /tmp/root${m}; done
    

एक बार जब आप परिणामों से खुश हो जाते हैं, तो आप इसे एक ही फ़ाइल में रख सकते हैं ~/backup.sh

#!/bin/bash -eu

dir=$(mktemp -d)

cleanup(){
    cd /tmp/ # You can't umount or rm a directory while you are in it.
    for m in /dev/ /tmp/ /var/log/ /boot/ /; do
        sudo umount ${dir}${m}
    done
    rm -rf ${dir}
}

do_mounts(){
    sudo mount                     /dev/mmcblk0p2    ${dir}/
    sudo mount -t tmpfs -o size=1m tmpfs             ${dir}/dev/
    sudo mount -t tmpfs -o size=1m tmpfs             ${dir}/tmp/
    sudo mount -t tmpfs -o size=1m tmpfs             ${dir}/var/log/
    sudo mount                     /dev/mmcblk0p1    ${dir}/boot/
}

send_data(){
    cd ${dir}; sudo tar cf - * | gzip | tee >(md5sum > /tmp/backup.md5);
}

give_feedback(){
    awk '{print "MD5:", $1}' < /tmp/backup.md5 >&2
}

trap cleanup EXIT INT TERM
do_mounts
send_data
give_feedback

और कॉलिंग इस तरह से होती है ...

$ ssh pi@raspberry.local ./backup.sh | pv | tee rpi.tgz | md5sum | awk '{print "MD5:", $1}'
MD5: d3d9181374f3ec8e4e721c786eca9f71
 348MB 0:04:50 [ 1.2MB/s] [                 <=>                                ]
MD5: d3d9181374f3ec8e4e721c786eca9f71

संकेत: आप प्रयोग कर रहे हैं, को बदलने tar cf - *के लिए tar cf - etcअपने आप को प्रत्येक परीक्षा चलाने पर समय का एक समूह को बचाने के लिए।


2

मैं अपने रास्पिस @ घर के साथ एक ही मुद्दा था। इसलिए मैंने raspiBackup लिखा है जो उपयोगकर्ता के आविष्कार के बिना नियमित आधार पर dd, tar और rsync बैकअप बनाने की अनुमति देता है। इसे मात्र आजमाएं।

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