私はrsyncを使ってRaspberry Piで実行されているUbuntuをバックアップしています。とにかく、開始後にのみコンテンツが生成されるすべての共通ディレクトリを除外しました。
rsyncはパーティションフォーマットを書き込み、デバイスに取り付けられているバックアップイメージを繰り返し、接続された外部USBドライブにイメージを書き込みます。 USBストレージドライブのデータは、ソースSDカードのデータよりもはるかに多くのスペースを占めています。約5325MB対3881MB。
デバッグを試してください
ソースにないターゲットに未知の追加ファイルが生成されたか、ソース内のファイルと比較してターゲットで同じファイルがますます大きくなっていることを再確認するために、このrsyncコマンドを実行しました。
sudo rsync -nrlpgoDv --delete --exclude-from='/home/ubuntu/exclude-list.txt' / /mnt/dst_root/
しかし、ファイルの数やソースとターゲットが占めるサイズに関しては、ソースとターゲットの間に大きな違いはないと思います。
私の質問
なぜこれですか?セクターサイズに関連していますか?
私のソースUbuntu OSでは、fdisk -l
次のことがあります。
Disk /dev/mmcblk0: 29.54 GiB, 31719424000 bytes, 61952000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x12345678
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 2048 526335 524288 256M c W95 FAT32 (LBA)
/dev/mmcblk0p2 526336 61951966 61425631 29.3G 83 Linux
外部ストレージドライブのイメージファイルにバックアップを書き込みます。バックアップイメージを次のように分割します。
echo "label: dos" | sfdisk "${IMGFILE}" > /dev/null
sfdisk "${IMGFILE}" <<EOF > /dev/null
,256MiB,c
,+,83
EOF
次に、次のスクリプトで対応するバックアップイメージファイルのルートパーティションをフォーマットします。
mkfs.ext4 -q -b 4096 "${LOOP}p2" > /dev/null
これで、バックアップイメージが接続されているループデバイスのfdiskは次のようになります。
Disk /dev/loop6: 5.62 GiB, 6035603456 bytes, 11788288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x12345678
Device Boot Start End Sectors Size Id Type
/dev/loop6p1 2048 526335 524288 256M c W95 FAT32 (LBA)
/dev/loop6p2 526336 11788287 11261952 5.4G 83 Linux
fdisk -l
バックアップイメージが保存されている外部ストレージドライブから:
Disk /dev/sda: 3.64 TiB, 4000752599040 bytes, 7813969920 sectors
Disk model: My Passport 2627
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: B5B6FD62-945C-466D-7T49-YU5D4RRE7087
Device Start End Sectors Size Type
/dev/sda1 2048 7813967871 7813965824 3.6T Linux filesystem
セクタサイズとI / Oサイズの違いにより、データはUSBドライブの容量を増やしますか?
resize2fs
また、私のバックアップスクリプトは(ファイルシステムのマウント解除後)を使用してバックアップイメージのルートファイルシステムを縮小しようとします。エラーはありませんが、resize2fs
バックアップルートファイルシステムの空き領域を削除する作業は非常に悪いです。すべてのスペースを削除せず、時には何も削除しないことがあります。たぶんこれはセクターサイズにも関連していますか?
修正する
いくつかの調査の結果、この問題は - snap と関連があると考えられます。私のUbuntuシステムにインストールされています。読んでみると、スナップアプリケーションは圧縮されたsquashfsファイルシステムに保存されているようです。おそらく、rsyncするときにターゲットext4ファイルシステムでより多くのスペースを占有しますか?
どんな提案でも大変感謝します!
答え1
回答
私はrsyncを使用してPiでUbuntuを実行しているSDカードのフルシステムバックアップを実行し、SDカードと同じブート(fat32)およびルート(ext4)ファイルシステムにパーティションを分割してフォーマットしました。私のrsyncコマンドはコンテンツをコピーするだけでなく、/var/lib/snapd
コピーもしました/snap
。これは不要なことがわかりました。
Snapアプリケーションはsquashfsイメージとして存在しますが、/var/lib/snapd
起動時に読み取り専用ファイルシステムとしてdirにマウントされることもあります。/snap
結局のところ、私のバックアップイメージのrootfsは、実行中のUbuntu OSのrootfsよりも多くのスペースを占有しません。問題は、df command
占有スペースを報告するために使用していることです。df command
このように取り付けられたオブジェクトのサイズが含まれていないため、これは誤った選択ですdu command
。
これはdf command
実行中のUbuntu Pi OSで発生します。 rootfsが3885MBを占めていると報告されています。
ubuntu@ubuntu:~$ df -BMB
Filesystem 1MB-blocks Used Available Use% Mounted on
tmpfs 398MB 5MB 393MB 2% /run
/dev/mmcblk0p2 31312MB 3885MB 26120MB 13% /
tmpfs 1988MB 0MB 1988MB 0% /dev/shm
tmpfs 6MB 0MB 6MB 0% /run/lock
/dev/mmcblk0p1 265MB 155MB 110MB 59% /boot/firmware
/dev/sda1 3936879MB 1386199MB 2350626MB 38% /media/4TB1
私はdu command
PiでUbuntu Pi OSを実行しているので、rootfsに使用されたスペースは4.7GiB(5046MB)と報告されます。これは/snap
私のバックアップイメージでrootfsが占めるスペースとほぼ同じです。 。
ubuntu@ubuntu:/usr/local/bin$ sudo du -hs /
du: cannot access '/proc/6297/task/6297/fd/4': No such file or directory
du: cannot access '/proc/6297/task/6297/fdinfo/4': No such file or directory
du: cannot access '/proc/6297/fd/3': No such file or directory
du: cannot access '/proc/6297/fdinfo/3': No such file or directory
4.7G /
対照的に、PiからSDカードを取り出したとき...これはdu command
私のラップトップに接続されているSDカードでrootfsを実行した結果です。
[flex@flex ~]$ sudo du -hs /media/writable/
3.3G /media/writable/
これは、Piで実行されているUbuntuオペレーティングシステムがないため、スナップアプリケーションがsdカードの/ snapディレクトリにインストールされなくなったためです。