Linux 운영 체제(OpenWrt)가 실행되는 동안 스크립트에서 이러한 명령을 사용하여 SD 카드의 이미지 백업을 생성합니다.
rootfs는 1000MiB이므로 처음 300개 블록만 추가합니다. 이렇게 하면 Win32 Disk Imager를 사용하여 백업에서 원하는 다른 SD 카드로 부팅 및 루트 파일 시스템을 복원할 수 있습니다("할당된 파티션만 읽기" 선택).
imagesPath="/mnt/usb/openwrt/BackupOfImages/"
image_file=${imagesPath}OpenWrt-Image-$(date "+%Y-%m-%d-%H-%M-%S").img.gz
sync
dd if=/dev/mmcblk0 bs=4M count=300 | pv | gzip > $image_file
그런데 gunzip을 사용하여 생성한 .img 파일을 설치하면 작업 중인 파일 중 일부가 보이는데...최신 버전은 백업되지 않지만 해당 파일이 포함된 이전 버전은 백업됩니다. . 백업 스크립트를 실행하기 전에 최근에 편집한 내용은 백업에 포함되지 않습니다. 스크립트에서 dd 명령을 실행하기 전에 sync 명령을 사용하면 캐시가 플러시되어 모든 파일의 최신 버전이 백업될 것이라고 생각했습니까?
dd 명령을 실행하기 전에 sd 카드에서 파일 시스템을 마운트 해제하는 것이 가장 좋은 방법이라는 것을 알고 있지만 내 사용 사례에서는 그렇게 할 수 없습니다. 내가 또 무슨 잘못을 했나요?
건배.
답변1
어쩌면 동기화 명령이 올바른 위치에 있지 않을 수도 있습니다. 나는 전문가는 아니지만 다음과 같이 쓰고 싶습니다.
dd if=/dev/mmcblk0 bs=4M count=300 && sync | gzip > $image_file