rsyncを使用して作成されたバックアップは、ソースドライブよりも外部ドライブの容量を増やします。

rsyncを使用して作成されたバックアップは、ソースドライブよりも外部ドライブの容量を増やします。

私は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 commandPiで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ディレクトリにインストールされなくなったためです。

関連情報