imgの空き領域をバックアップせずに使用したデータのみをバックアップする方法は?

imgの空き領域をバックアップせずに使用したデータのみをバックアップする方法は?

Raspbianシステムファイルが破損して永久に消える場合に備えてバックアップしたいと思います。しかし、SDカードのメモリは32Gなので、従来の方法では、ddは通常32Gの記憶領域を持つ画像を作成します。しかし、実際には4Gのストレージスペースのみが使用され、残りの28Gは空です。 win32imagerツールを使用しても結果は同じです。

私の質問は:imgを保存するのに少ないスペースしか必要としないようにimgを小さくするために使用したデータだけを使用してimgをバックアップできますか?

オンラインでこれが可能だと主張する人を見ました。スクリプトは次のとおりです。

#!/bin/sh
sudo dd if=/dev/zero of=raspberrypi.img bs=1MB count=2500
sudo parted raspberrypi.img --script -- mklabel msdos
sudo parted raspberrypi.img --script -- mkpart primary fat32 8192s 122879s
sudo parted raspberrypi.img --script -- mkpart primary ext4 122880s -1

loopdevice=`sudo losetup -f --show raspberrypi.img`
device=`sudo kpartx -va $loopdevice | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1`
device="/dev/mapper/${device}"
partBoot="${device}p1"
partRoot="${device}p2"
sudo mkfs.vfat $partBoot
sudo mkfs.ext4 $partRoot
sudo mount -t vfat $partBoot /media
sudo cp -rfp /boot/* /media/
sudo umount /media
sudo mount -t ext4 $partRoot /media/
cd /media
sudo dump -0uaf - / | sudo restore -rf -
cd
sudo umount /media
sudo kpartx -d $loopdevice
sudo losetup -d $loopdevice

残念ながら、このスクリプトはimgを完全に生成できず、スクリプトがエラーで完了するため機能しません。

誰でもどんなアイデアがありますか?とても感謝しています!

ありがとう、

ヘレン

ベストアンサー1

システムを一定期間使用した後は、対応する4GBがSDカードのどこに保存されているかを正確に分析する必要があるため、ddデバイスを最初から起動するのは危険です。

圧縮ユーティリティを介して画像を転送することをお勧めします。内容のない大きな空間でも圧縮されたイメージでは空間をほとんど占有しません。

dd if=/dev/sdxxx conv=sync,noerror bs=64K | gzip -c > sdxxx.image.gz

おすすめ記事