หากคุณพิจารณาข้อเท็จจริง 2 ข้อนี้มันจะเปิดโอกาสให้คุณได้เลือกมากขึ้น:
- คุณสามารถเมานต์อุปกรณ์เดียวกันในหลายไดเรกทอรีพร้อมกัน
- คุณสามารถสร้างการ
tmpfs
เมาท์ได้ทุกที่ที่คุณต้องการปิดบังไดเรกทอรี
ใช่มีหลายเส้นทางที่คุณไม่ต้องการสำรองข้อมูล คุณหลีกเลี่ยงส่วนใหญ่ด้วยการติดตั้งพาร์ติชันหลักของคุณในไดเรกทอรีที่ 2 อื่น ๆ จะยังคงมีข้อมูลที่คุณไม่ต้องการที่จะสำรองข้อมูลเช่น/tmp
, และ/dev
/var/log
กระบวนการของฉันเป็นแบบนี้ ...
- SSH เข้าไปใน Raspberry Pi
เมานต์ฉันต้องการสำรองข้อมูลอย่างแน่นอน
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/
- ออกจากเครื่อง
คัดลอกข้อมูลผ่าน 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.
ลบการเมาท์ชั่วคราว
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
เพื่อประหยัดเวลาในการทดสอบแต่ละครั้ง