rsync -aHAX --numeric-ids --progress --stats /mnt/loop/ /mnt/newimage/

kopiert alle Dateien und Verzeichnisse von /mnt/loop/ nach /mnt/newimage/ unter Beibehaltung zahlreicher Dateiattribute. Im Einzelnen:

-a steht für "archive mode" und sorgt dafür, dass der Kopiervorgang rekursiv erfolgt und wichtige Attribute wie symbolische Links, Berechtigungen, Zeitstempel, Eigentümer, Gruppen und spezielle Dateien (z. B. Geräte) erhalten bleiben.
-H bewirkt, dass Hardlinks beibehalten werden.
-A bewahrt ACLs (Access Control Lists), also erweiterte Berechtigungen, die über die üblichen Unix-Dateiberechtigungen hinausgehen.
-X stellt sicher, dass Extended Attributes (z. B. SELinux-Kontexte oder andere Metadaten) erhalten bleiben.
--numeric-ids kopiert die Benutzer- und Gruppen-IDs numerisch, anstatt die Namen zu übersetzen – das ist besonders nützlich, wenn Sie sicherstellen möchten, dass die IDs exakt übernommen werden.
				
			
				
					#!/bin/bash
set -e

#########################################
# 1. Mounten des Original-Images (read-only)
#########################################
# Das Original-Image wird im Read-Only-Modus gemountet,
# sodass keine Änderungen vorgenommen werden.
sudo mount -o loop,ro /mnt/h/debian_img/full_disk.img /mnt/loop

#########################################
# 2. Extrahieren der relevanten Verzeichnisse
#########################################
# Es werden die Verzeichnisse /var/www und /var/lib/mysql extrahiert.
# Zunächst werden die Zielverzeichnisse angelegt:
sudo mkdir -p /mnt/newimage/var/www
sudo mkdir -p /mnt/newimage/var/lib/mysql

# Kopieren des Web-Verzeichnisses:
rsync -aHAX --numeric-ids --progress --stats /mnt/loop/var/www/ /mnt/newimage/var/www/

# Kopieren des MySQL-Verzeichnisses:
rsync -aHAX --numeric-ids --progress --stats /mnt/loop/var/lib/mysql/ /mnt/newimage/var/lib/mysql/

echo "Extraktion der relevanten Verzeichnisse abgeschlossen."

#########################################
# 3. Erstellen eines neuen, kleineren Images
#########################################
# Ermittlung der belegten Größe der extrahierten Daten (in MB):
DATA_SIZE=$(du -s --block-size=1M /mnt/newimage | cut -f1)
# Einen Puffer (z.B. 100 MB) hinzufügen, um ausreichend Platz zu haben:
NEW_SIZE=$((DATA_SIZE + 100))
echo "Erforderliche Image-Größe: ${NEW_SIZE} MB"

# Anlegen eines leeren Images mit der berechneten Größe:
sudo dd if=/dev/zero of=/mnt/h/debian_img/new_disk.img bs=1M count=$NEW_SIZE

# Formatieren des neuen Images mit ext4:
sudo mkfs.ext4 /mnt/h/debian_img/new_disk.img

#########################################
# 4. Mounten des neuen Images und Übertragen der Daten
#########################################
# Mounten des neuen Images:
sudo mkdir -p /mnt/newimg
sudo mount -o loop /mnt/h/debian_img/new_disk.img /mnt/newimg

# Kopieren der extrahierten Daten in das neue Image:
sudo cp -a /mnt/newimage/* /mnt/newimg/

# Unmounten des neuen Images:
sudo umount /mnt/newimg

echo "Neues Image wurde erfolgreich erstellt und die Daten wurden übertragen."

				
			
				
					watch -n 5 'du -sh /mnt/newimage'
				
			
				
					sudo mount -o loop,ro /mnt/h/debian_img/full_disk.img /mnt/loop

https://www.mslinn.com/blog/2022/01/10/wsl-backup.html