システムで dd コマンドを実行して、以前のバージョンのファイルを使用してバックアップ・イメージを作成します。

システムで dd コマンドを実行して、以前のバージョンのファイルを使用してバックアップ・イメージを作成します。

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

おすすめ記事