Backup Raspberry Pi โดยอัตโนมัติพร้อมการสำรองข้อมูลที่เพิ่มขึ้น


15

มีคำถามและคำตอบที่แตกต่างกันในเรื่องนี้ อย่างไรก็ตามเมื่อค้นหาฉันไม่สามารถหาคำตอบที่อาจถือได้ว่า "มาตรฐาน" หรือที่รวบรวมตัวเลือกต่าง ๆ ในที่เดียว

ฉันต้องการสำรองเนื้อหาของ Raspberry Pi ของฉันเพื่อเปิดใช้งานการกู้คืนที่สมบูรณ์หากจำเป็นได้อย่างง่ายดายและเชื่อถือได้

คุณสมบัติเหล่านี้เหมาะอย่างยิ่ง:

  • สำรองข้อมูลไว้ในตำแหน่งภายนอก (USB stick, DAS, NAS, เครือข่ายคอมพิวเตอร์ ฯลฯ )
  • อัตโนมัติไม่ว่าจะเพิ่มหรือผ่านการตั้งเวลา
  • หมายเลขรุ่นของข้อมูลสำรอง

การโคลนการ์ด SD ดูเหมือนจะเป็นวิธีแก้ปัญหาที่ได้รับความนิยม แต่จากการโพสต์โดย Goldilocksสิ่งนี้ไม่แนะนำให้เลือกเพราะโคลนมีไฟล์ที่โหลดเมื่อรันไทม์เท่านั้นเป็นต้น

ดังนั้นฉันจึงสันนิษฐานว่าทางออกที่ดีใช้บางอย่างเช่นrsyncหรืออาจจะมีประสิทธิภาพมากกว่ายูทิลิตี้ที่สามารถจัดการ critera ด้านบน

สถานการณ์เฉพาะของฉัน: ฉันมี Raspberry Pi บน LAN ที่ฉันสามารถสำรองข้อมูลไปยังคอมพิวเตอร์ Mac OS X, Synology DiskStation NAS หรือหน่วยความจำ USB ที่เชื่อมต่อกับ Raspberry ฉันไม่ต้องการที่จะใช้หลัง


มีรายการตัวเลือกการสำรองข้อมูลมากมายบนไซต์ Ubuntu (ส่วนใหญ่ไม่ใช่เฉพาะ Ubuntu) askubuntu.com/questions/2596/comparison-of-backup-tools/2903
pidge

คำตอบ:


10

Rsnapshot เป็นไปตามเงื่อนไขเหล่านี้: 1

  • สามารถใช้ในท้องถิ่นหรือจากระยะไกล

  • สามารถอัตโนมัติ / กำหนด

  • ใช้การสำรองข้อมูลแบบเพิ่มหน่วยตัวเลข

ฉันไม่ได้มีประสบการณ์ส่วนตัวกับมันมากไปกว่าความจริงที่ว่ามันใช้กับเซิร์ฟเวอร์ที่ฉันทำงานซึ่งมันช่วยวันได้เป็นครั้งคราว แต่ดูเหมือนว่าจะมีการแนะนำที่ดีที่นี่คือ Arch linux wiki ซึ่งมีแนวโน้มที่ดี เอกสารมีหน้า (ฉันแน่ใจว่าส่วนใหญ่นี้ใช้กับ distros อื่น ๆ อย่างเท่าเทียมกัน) และหน้าแรกอ้างถึง HOWTO ที่ฉันไม่สามารถหาออนไลน์ แต่การค้นหามันปรากฏขึ้นในแบบฝึกหัดการอภิปรายจำนวนมากและอื่น ๆ นอกเหนือจากลิงก์เหล่านี้ (วิธีการจริงอาจถูกเก็บไว้ออฟไลน์เพื่อให้ผู้คนไม่สับสนโดยใช้สิ่งที่ผิดกับรุ่นที่ไม่ถูกต้อง)


  1. แม้ว่าจะเห็นได้ชัดในขณะนี้ (2018) ก็อาจจะ unmaintained ในความโปรดปรานของBorgBackup

ขอบคุณ! ฉันจะทดสอบวันหยุดสุดสัปดาห์นี้และยืนยันคำตอบของคุณหากได้ผล
Winterflags

1
Rsnapshot ไม่ได้รับการบำรุงรักษาอีกต่อไป เขียนต้นฉบับเปลี่ยนไปใช้BorgBackup
lightswitch05

@ lightswitch05 ดีใจที่รู้!
goldilocks

2

ฉันได้ลองใช้เทคนิคการสำรองข้อมูลหลายอย่างแล้ว ฉันใช้ 2 เป็นประจำ

ฉันโคลนการ์ด SD บน Mac ของฉันและบีบอัดภาพ ฉันใช้สิ่งนี้เป็นข้อมูลสำรองเพื่อความปลอดภัยหรือเพื่อทำบัตรซ้ำ ฉันยอมรับว่านี่ไม่ใช่อุดมคติ สคริปต์ของฉันอยู่ด้านล่าง

บ่อยครั้งที่ฉันใช้rsyncเพื่อคัดลอกไปยัง HD ที่แนบมากับ Pi ดู/raspberrypi//a/28087/8697เพื่อดูรายละเอียด

อันที่จริงฉันมีเวอร์ชั่นต่างกันเล็กน้อยสำหรับการสำรองข้อมูลภาพ Wheezy, Jessie และ MATE (ไปยังไดเรกทอรีต่าง ๆ )

ฉันลอง rsync กับ Mac ของฉันแล้ว แต่นี่ใช้ได้เพียงบางส่วนเท่านั้น ปัญหาพื้นฐานคือผู้ใช้บน Mac และ Pi ไม่ตรงกันไม่พูดถึงความแตกต่างระหว่างrsyncบนแพลตฟอร์มต่าง ๆ ด้วยการเปลี่ยนแปลงด้านความปลอดภัยใน OS X ล่าสุดมันอาจจะมีปัญหามากขึ้น

ฉันใช้หนึ่ง Pi สำเร็จแล้วในการสำรองข้อมูลอื่นผ่านเครือข่าย

ฉันไม่ทราบว่าจะใช้งาน NAS ได้อย่างไร แต่สงสัยว่าอาจมีปัญหากับการเชื่อมโยงและสิทธิ์

#!/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

โซลูชัน DAS ของคุณควรปรับให้เข้ากับแท่ง USB ที่เชื่อมต่อกับ Pi ได้อย่างง่ายดายใช่ไหม แทนที่จะกังวลเกี่ยวกับการตั้งค่าการสำรองข้อมูลเครือข่ายฉันแค่คิดถึง rsync กับ USB
Winterflags

2

หากคุณพิจารณาข้อเท็จจริง 2 ข้อนี้มันจะเปิดโอกาสให้คุณได้เลือกมากขึ้น:

  1. คุณสามารถเมานต์อุปกรณ์เดียวกันในหลายไดเรกทอรีพร้อมกัน
  2. คุณสามารถสร้างการtmpfsเมาท์ได้ทุกที่ที่คุณต้องการปิดบังไดเรกทอรี

ใช่มีหลายเส้นทางที่คุณไม่ต้องการสำรองข้อมูล คุณหลีกเลี่ยงส่วนใหญ่ด้วยการติดตั้งพาร์ติชันหลักของคุณในไดเรกทอรีที่ 2 อื่น ๆ จะยังคงมีข้อมูลที่คุณไม่ต้องการที่จะสำรองข้อมูลเช่น/tmp, และ/dev/var/log

กระบวนการของฉันเป็นแบบนี้ ...

  1. SSH เข้าไปใน Raspberry Pi
  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

ฉันมีปัญหาเดียวกันกับ Raspis @ home ของฉัน นั่นเป็นเหตุผลที่ฉันเขียนraspiBackupซึ่งอนุญาตให้สร้างการสำรองข้อมูล dd, tar และ rsync บนฐานปกติโดยไม่ต้องมีการประดิษฐ์ของผู้ใช้ ลองใช้ดู

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.