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과 관련이 있을 수 있다고 생각됩니다. 내 우분투 시스템에 설치되어 있습니다. 읽어보면 스냅 애플리케이션이 압축된 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 디렉터리에 설치되지 않기 때문입니다.

관련 정보