Raspberry Pi'yi artımlı yedeklemelerle otomatik olarak yedekleyin


15

Bu konuda bazı farklı sorular ve cevaplar var. Ancak, arama yaparken "kanonik" olarak kabul edilebilecek veya çeşitli seçenekleri tek bir yerde toplayabilecek bir cevap bulamadım.

Gerekirse eksiksiz ve kolay bir şekilde restorasyonu sağlamak için Raspberry Pi cihazımın içeriğini yedeklemek istiyorum.

Bu özellikler ideal olacaktır:

  • Harici konumda tutulan yedeklemeler (USB bellek, DAS, NAS, Ağ bilgisayarı vb.)
  • Artımlı veya zamanlama yoluyla otomasyon
  • Yedeklerin sürüm numaralandırması

SD kartı klonlamak popüler bir çözüm gibi görünüyor, ancak Goldilocks'ın bu yazısına göre, bir klon yalnızca çalışma zamanında yüklenen dosyaları içerdiğinden bu önerilmez.

Bu yüzden, iyi bir çözümün rsyncyukarıdaki kriterleri karşılayabilecek bir yardımcı program gibi veya belki de daha sağlam bir şey kullandığını varsayıyorum .

Benim özel durumum: Mac OS X bilgisayarına, Synology DiskStation NAS'a veya Raspberry'e bağlı bir USB bellek çubuğuna yedekleyebileceğim bir LAN'da Raspberry Pi var. İkincisini kullanmamayı tercih ederim.


Ubuntu sitesinde uzun bir yedekleme seçeneği listesi var (çoğunlukla Ubuntu'ya özgü değil) askubuntu.com/questions/2596/comparison-of-backup-tools/2903
pidge

Yanıtlar:


10

Rsnapshot şu kriterleri yerine getirir: 1

  • Yerel veya uzaktan kullanılabilir.

  • Otomatik / programlanabilir.

  • Numaralı artımlı yedeklemeler kullanır.

Üzerinde çalıştığım sunucularda kullanıldığı gerçeğinin ötesinde çok fazla kişisel deneyimim yok, günü zaman zaman kurtardı, ancak burada güzel bir tanıtım var gibi görünüyor , Arch linux wiki, dokümantasyon, bir sayfaya sahip (bunun çoğunun diğer dağıtımlar için de aynı derecede geçerli olduğuna eminim) ve ana sayfa çevrimiçi bulamadığım bir NASIL belgesini ifade ediyor, ancak arama yapmak çok sayıda öğretici, tartışma vb. Bu bağlantılara ek olarak (gerçek nasıl yapılır, yanlış sürümü yanlış kullanan kullanıcılarla karıştırılmaması için çevrimdışı tutulabilir).


  1. Görünüşe göre şimdi (2018), BorgBackup lehine sakat olabilir .

Teşekkürler! Bu hafta sonu test edeceğim ve eğer işe yararsa cevabınızı onaylayacağım.
Winterflags

1
Rsnapshot artık korunmuyor. Orijinal yazar anahtarlamalı kullanmaya BorgBackup
lightswitch05

@ lightswitch05 Bilmek güzel!
goldilocks

2

Birkaç yedekleme tekniği denedim. Düzenli olarak 2 kullanıyorum.

Mac kartımdaki SD kartı klonlayıp görüntüyü sıkıştırıyorum. Bunu bir güvenlik yedeği olarak veya yinelenen kartlar yapmak için kullanıyorum. Bunun ideal olmadığını kabul ediyorum. Senaryom aşağıda.

Daha sık, rsyncPi'ye bağlı bir HD'ye kopyalamak için kullanıyorum . Ayrıntılar için /raspberrypi//a/28087/8697 adresine bakın.

Aslında Wheezy, Jessie ve MATE görüntülerini (farklı dizinlere) yedeklemek için biraz farklı sürümlerim var.

Mac'ime rsync yapmaya çalıştım, ama bu sadece kısmen çalıştı. Temel sorun, Mac ve Pi'deki kullanıcıların rsyncfarklı platformlar arasındaki farklardan bahsetmemekle uyuşmamasıdır . En son OS X'teki güvenlik değişiklikleri ile muhtemelen daha da fazla sorunu olacaktır.

Bir Pi'yi ağ üzerinden diğerinin yedeğini almak için başarıyla kullandım.

Bunun NAS için nasıl çalışacağını bilmiyorum, ancak sabit bağlantılarla ve izinlerle ilgili sorunlar olabileceğinden şüpheleniyorum.

#!/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 çözümünüz Pi'ye bağlı bir USB çubuğuna kolayca uyarlanabilir olmalıdır, değil mi? Ağa bağlı bir yedekleme ayarlamakla uğraşmak yerine, USB'ye rsync yapmayı düşünüyorum.
Winterflags

2

Bu 2 gerçeği göz önünde bulundurursanız, sizi diğer seçeneklere açacaktır:

  1. Aynı cihazı aynı anda birden fazla dizine monte edebilirsiniz.
  2. tmpfsBir dizini maskelemek istediğiniz herhangi bir yere bağlar oluşturabilirsiniz .

Evet, yedeklemek istemediğiniz birçok yol var. Birincil bölümünüzü 2. bir dizine bağlayarak çoğunu önlersiniz. Diğerleri hala gibi yedekleme istemediğiniz verilere sahip olur /tmp, /devve /var/log.

Sürecim böyle gitti ...

  1. Ahududu Pi SSH
  2. Mount tam olarak yedeklemek istediğimi istiyorum

    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. Makineden çıkın
  4. Verileri ssh + tar ile kopyalayın

    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. Geçici bağlantıları çıkarın

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

Sonuçlardan memnun olduğunuzda, hepsini tek bir dosyaya koyabilirsiniz. ~/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

Ve arama böyle gider ...

$ 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

İPUCU: Eğer denemeler yapıyor olsak, değiştirmek tar cf - *için tar cf - etcher test kaçak kendinize zaman bir demet kaydedin.


2

Raspis @ home ile aynı sorunu yaşadım. Bu yüzden kullanıcı buluşu olmadan düzenli bir temelde dd, katran ve rsync yedekleri oluşturmaya izin veren raspiBackup yazdım . Sadece bir deneyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.