Cadangkan Raspberry Pi secara otomatis, dengan cadangan tambahan


15

Ada beberapa pertanyaan dan jawaban yang berbeda mengenai hal ini. Namun, ketika mencari, saya tidak dapat menemukan jawaban yang dapat dianggap "kanonik" atau yang mengumpulkan berbagai opsi di satu tempat.

Saya ingin mencadangkan konten Raspberry Pi saya untuk memungkinkan pemulihan lengkap jika diperlukan, dengan mudah dan andal.

Fitur-fitur ini ideal:

  • Cadangan disimpan di lokasi eksternal (stik USB, DAS, NAS, komputer Jaringan, dll)
  • Otomatis, baik secara bertahap atau melalui penjadwalan
  • Penomoran versi cadangan

Mengkloning kartu SD tampaknya menjadi solusi yang populer, tetapi menurut posting ini oleh Goldilocks ini tidak disarankan karena klon berisi file yang dimuat hanya pada saat runtime, dll.

Jadi saya berasumsi bahwa solusi yang baik menggunakan sesuatu seperti rsyncatau mungkin lebih kuat, sebuah utilitas yang dapat menangani kriteria di atas.

Situasi khusus saya: Saya memiliki Raspberry Pi di LAN tempat saya dapat mencadangkan ke komputer Mac OS X, Synology DiskStation NAS atau ke stik memori USB yang terhubung ke Raspberry. Saya lebih suka tidak menggunakan yang terakhir.


Ada daftar panjang opsi cadangan di situs Ubuntu (kebanyakan non-spesifik Ubuntu) askubuntu.com/questions/2596/comparison-of-backup-tools/2903
pidge

Jawaban:


10

Rsnapshot memenuhi kriteria tersebut: 1

  • Dapat digunakan secara lokal atau jarak jauh.

  • Dapat otomatis / dijadwalkan.

  • Menggunakan cadangan tambahan bernomor.

Saya tidak punya banyak pengalaman pribadi dengan itu di luar fakta bahwa itu digunakan pada server tempat saya bekerja, di mana ia kadang-kadang menyelamatkan hari, tetapi tampaknya ada pengantar yang bagus di sini , Arch linux wiki, yang cenderung memiliki banyak dokumentasi, memiliki halaman (saya yakin sebagian besar ini berlaku juga untuk distro lain), dan halaman utama merujuk pada HOWTO yang tidak dapat saya temukan secara online, tetapi mencarinya menemukan banyak tutorial, diskusi, dll. selain tautan-tautan ini (cara aktual dapat disimpan offline agar orang tidak bingung menggunakan yang salah dengan versi yang salah).


  1. Meskipun tampaknya sekarang (2018) mungkin tidak diurus mendukung BorgBackup .

Terima kasih! Saya akan mengujinya akhir pekan ini dan mengkonfirmasi jawaban Anda jika berhasil.
Winterflags

1
Rsnapshot tidak lagi dipertahankan. The penulis asli beralih menggunakan BorgBackup
lightswitch05

@ lightswitch05 Bagus untuk tahu!
goldilocks

2

Saya sudah mencoba beberapa teknik cadangan. Saya menggunakan 2 secara teratur.

Saya mengkloning kartu SD pada Mac saya dan mengompres gambar. Saya menggunakan ini sebagai cadangan keamanan atau untuk membuat kartu duplikat. Saya setuju ini bukan yang ideal. Script saya ada di bawah ini.

Lebih sering, saya gunakan rsyncuntuk menyalin ke HD yang terpasang pada Pi. Lihat /raspberrypi//a/28087/8697 untuk detailnya.

Sebenarnya saya memiliki versi yang sedikit berbeda untuk mencadangkan gambar Wheezy, Jessie dan MATE (ke direktori yang berbeda).

Saya memang mencoba rsync ke Mac saya, tetapi ini hanya berfungsi sebagian. Masalah mendasarnya adalah bahwa pengguna pada Mac dan Pi tidak cocok, belum lagi perbedaan antara rsyncplatform yang berbeda. Dengan perubahan keamanan di OS X terbaru itu mungkin akan memiliki lebih banyak masalah.

Saya telah berhasil menggunakan satu Pi untuk membuat cadangan dari yang lain melalui jaringan.

Saya tidak tahu bagaimana ini akan bekerja untuk NAS, tetapi curiga mungkin ada masalah dengan hardlink dan izin.

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

Solusi DAS Anda harus mudah disesuaikan dengan stik USB yang terhubung ke Pi, bukan? Daripada repot-repot mengatur cadangan jaringan, saya berpikir hanya melakukan rsync ke USB.
Winterflags

2

Jika Anda mempertimbangkan 2 fakta ini, itu akan membuka Anda ke opsi lain:

  1. Anda dapat memasang perangkat yang sama di banyak direktori secara bersamaan.
  2. Anda dapat membuat tmpfsmount di mana saja Anda ingin menyembunyikan direktori.

Jadi, ya ada banyak jalur yang tidak ingin Anda backup. Anda menghindari sebagian besar dari mereka dengan memasang partisi utama Anda di direktori ke-2. Yang lain masih akan memiliki data yang Anda tidak ingin backup seperti /tmp, /dev, dan /var/log.

Proses saya berjalan seperti ini ...

  1. SSH ke dalam Raspberry Pi
  2. Gunung persis ingin saya ingin cadangan

    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. Keluar dari mesin
  4. Salin data melalui 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. Hapus dudukan sementara

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

Setelah Anda puas dengan hasilnya, Anda bisa memasukkan semuanya ke dalam satu file seperti ~/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

Dan panggilan seperti ini ...

$ 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

PETUNJUK: Ketika Anda bereksperimen, mengubah tar cf - *untuk tar cf - etcuntuk menyelamatkan diri banyak waktu pada setiap uji coba.


2

Saya memiliki masalah yang sama dengan Raspis @ home saya. Itu sebabnya saya menulis raspiBackup yang memungkinkan untuk membuat cadangan dd, tar dan rsync secara teratur tanpa penemuan pengguna. Cobalah saja.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.