이 두 가지 사실을 고려하면 다른 옵션을 열 수 있습니다.
- 동일한 장치를 여러 디렉토리에 동시에 마운트 할 수 있습니다.
tmpfs
디렉토리를 마스크하려는 곳이면 어디든 마운트 를 만들 수 있습니다 .
예, 백업하고 싶지 않은 경로가 많이 있습니다. 1 차 파티션을 2 차 디렉토리에 마운트하여 대부분을 피할 수 있습니다. 다른 사람들은 여전히 같은 백업 원하지 않는 데이터를해야합니다 /tmp
, /dev
하고 /var/log
.
내 프로세스는 다음과 같이 진행되었습니다 ...
- 라즈베리 파이에 SSH
정확히 백업하고 싶었던 마운트
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
각 테스트 실행에 자신에게 시간의 무리를 저장합니다.