A partire da distroclone 1.4.10 e distroclone-backup 1.3.4, i due strumenti sono completamente interoperabili su filesystem btrfs. Questi strumenti sono già presenti in SysLinuxOS 13.2.
DistroClone può costruire una live ISO direttamente dalla cache rootfs creata da DistroClone Backup, saltando completamente la fase di clonazione rsync dal sistema live.
Questa guida spiega l’architettura tecnica della funzionalità, quando usarla e come
il layout dei subvolumi btrfs influisce su entrambi gli strumenti.
Perché costruire dalla cache invece del rsync live?
Il workflow standard di DistroClone clona il sistema in esecuzione:
sistema in esecuzione → rsync → /mnt/<distro>_live/rootfs/ → squashfs → ISO
Funziona bene, ma ha un limite: la clonazione cattura il sistema com’è
in quel momento, inclusi eventuali stati transitori, file aperti, log parzialmente
scritti e processi in corso. Se il sistema è sotto carico durante il build, alcuni file
potrebbero risultare inconsistenti.
DistroClone Backup mantiene una cache rootfs pulita e versionata su un volume
btrfs separato. La cache viene aggiornata su schedule (o a richiesta) e ogni versione è
uno snapshot btrfs stabile e read-only. Costruire la ISO dalla cache offre diversi vantaggi:
- Stato riproducibile — la ISO riflette uno snapshot noto e stabile, non il sistema live durante l’uso.
- Build più veloci — il rsync della cache trasferisce solo i file modificati; il rsync del build ISO copia da un volume btrfs locale alla velocità della memoria.
- Iterazione sicura — il sistema in esecuzione non viene mai letto durante la fase squashfs, eliminando le race condition da scritture concorrenti.
- Build offline — la cache può trovarsi su una partizione dedicata o disco esterno, permettendo build ISO anche su una macchina diversa.
Come DistroClone Backup costruisce la cache
DistroClone Backup memorizza la cache rootfs in una directory base configurabile.
Il percorso predefinito è:
/mnt/SysLinuxOS_backup/
Al suo interno crea il seguente layout:
/mnt/SysLinuxOS_backup/
├── .backup_meta ← file di metadati (data, distro, dimensione)
└── .rootfs_cache/ ← subvolume btrfs (target del rsync live)
└── .snapshots/ ← subvolume btrfs gestito da snapper
├── 1/
│ ├── info.xml
│ └── snapshot/ ← snapshot btrfs read-only di .rootfs_cache
├── 2/
│ ├── info.xml
│ └── snapshot/
└── ...
.rootfs_cache viene creato come subvolume btrfs, non come
directory normale. Questo permette a snapper di creare snapshot read-only senza copiare dati.
Dopo ogni backup, snapper crea uno snapshot numerato dentro
.snapshots/ — una copia point-in-time read-only del rootfs.
Una policy di retention (default: ultimi 10) elimina automaticamente gli snapshot più vecchi.
Il file .backup_meta contiene tre campi usati da DistroClone:
META_DATE="2026-06-17 14:30" META_DISTRO="SysLinuxOS" META_SIZE="8.2G"
Come DistroClone rileva e usa la cache
Rilevamento all’avvio
Prima di mostrare il dialog di benvenuto, DistroClone verifica due condizioni:
/mnt/SysLinuxOS_backup/.rootfs_cacheesiste come directory/mnt/SysLinuxOS_backup/.backup_metaesiste ed è leggibile
Se entrambe sono vere, DistroClone legge i metadati e costruisce una stringa etichetta:
2026-06-17 14:30 | SysLinuxOS | 8.2G
Questa etichetta appare in una checkbox aggiunta al dialog YAD di benvenuto:
[ ] Build from DCB cache (2026-06-17 14:30 | SysLinuxOS | 8.2G)
Se la cache non è presente, la checkbox non viene mostrata e il dialog è identico
al workflow standard.
Step 7 — bypass della clonazione
Quando l’utente abilita la checkbox, DistroClone imposta SOURCE_MODE=cache.
Lo step 7 (validazione sorgente / controllo sistema live) viene saltato completamente:
if [ "$SOURCE_MODE" != "cache" ] && [ "$SOURCE" != "/" ]; then
# la validazione live viene eseguita solo in modalità live
fi
Step 8 — rsync dalla cache
In modalità cache, lo step 8 usa $CACHE_DIR come sorgente rsync invece di
/. Due differenze rispetto al rsync live sono rilevanti:
| Flag | Modalità live | Modalità cache | Motivo |
|---|---|---|---|
--one-file-system |
sì | no | Su btrfs, --one-file-system non impedirebbe comunque l’ingresso neisubvolumi btrfs (stesso device ID). Il flag è omesso in modalità cache perché la sorgente è già un rootfs filtrato e autonomo — non il sistema in esecuzione con filesystem virtuali montati. |
--exclude=$LIVE_DIR |
sì | no | La directory di build live (/mnt/<distro>_live/) esiste solosul sistema in esecuzione, non nella cache. |
Il rsync della cache esclude percorsi specifici btrfs per evitare di portare metadati subvolume nella ISO:
--exclude=/.snapshots --exclude=/.snapshots/* --exclude=/@.rollback-bak-*
Le esclusioni standard si applicano ancora: /dev, /proc, /sys,
/run, /tmp, /mnt, /home,
/root, /var/log, cache apt, ecc.
Layout subvolumi btrfs e interoperabilità
Una tipica installazione SysLinuxOS btrfs usa il seguente layout di subvolumi:
btrfs root (top-level, subvolid=5)
├── @ ← montato su /
├── @home ← montato su /home
└── .snapshots ← snapshot snapper di @
/mnt/SysLinuxOS_backup/ (volume o subvolume btrfs separato)
└── .rootfs_cache/ ← subvolume, target rsync
└── .snapshots/ ← subvolume, config snapper "distroclone-backup"
├── 1/snapshot (read-only)
├── 2/snapshot (read-only)
└── ...
Perché rm -rf fallisce sulla cache
rm -rf /mnt/SysLinuxOS_backup/ fallisce con Read-only file system
perché gli snapshot btrfs read-only dentro .snapshots/N/snapshot/ non possono
essere eliminati dal percorso unlink del kernel — solo btrfs subvolume delete
può rimuoverli.
Ordine corretto di eliminazione:
# 1. Elimina ogni snapshot read-only (foglie) sudo btrfs subvolume delete /mnt/SysLinuxOS_backup/.rootfs_cache/.snapshots/1/snapshot sudo btrfs subvolume delete /mnt/SysLinuxOS_backup/.rootfs_cache/.snapshots/2/snapshot # ... ripeti per ogni snapshot numerato # 2. Elimina il subvolume .snapshots sudo btrfs subvolume delete /mnt/SysLinuxOS_backup/.rootfs_cache/.snapshots # 3. Elimina il subvolume .rootfs_cache sudo btrfs subvolume delete /mnt/SysLinuxOS_backup/.rootfs_cache # 4. Ora rm -rf funziona sul resto sudo rm -rf /mnt/SysLinuxOS_backup/
Il pulsante Delete Cache di DistroClone Backup (v1.3.4+) gestisce entrambi
i formati automaticamente — snapshot in formato snapper con directory numerate (N/snapshot)
e il formato legacy flat (@YYYY-MM-DD_HH:MM).
Workflow tipico
Un ciclo completo usando entrambi gli strumenti insieme:
- DistroClone Backup — Full Backup
Crea/mnt/SysLinuxOS_backup/.rootfs_cache/tramite clonazione rsync del
sistema in esecuzione. Su btrfs, snapper crea lo snapshot1/snapshot. - DistroClone Backup — Incremental Backup (opzionale)
Aggiorna la cache con le modifiche dall’ultima esecuzione. Snapper crea il successivo
snapshot numerato. Gli snapshot precedenti rimangono disponibili per il rollback. - Avvia DistroClone
Il dialog di benvenuto rileva la cache e mostra la checkbox con i metadati.
Abilita Build from DCB cache. - DistroClone costruisce la ISO dalla cache
Lo step 7 (validazione live) viene saltato. Lo step 8 esegue rsync da
/mnt/SysLinuxOS_backup/.rootfs_cache/. Tutti i passi successivi
(configurazione chroot, setup Calamares, squashfs, GRUB, assemblaggio ISO) girano normalmente. - Testa e distribuisci la ISO
La ISO risultante è uno snapshot pulito e riproducibile del sistema al momento
dell’ultimo backup.
Requisiti
- Filesystem btrfs sulla destinazione di backup (obbligatorio per il versioning snapper; ext4/xfs ricade su rsync semplice senza snapshot)
- snapper installato e configurato da DistroClone Backup (
sudo apt install snapper btrfs-progs) - DistroClone Backup v1.3.0 o successivo (integrazione snapper)
- DistroClone v1.4.10 o successivo (funzionalità build-from-cache)
- Almeno 4-6 GB di spazio libero sotto
/mntper la directory di lavoro del build ISO
Installazione
Entrambi i pacchetti sono disponibili dal repository APT di SysLinuxOS:
curl -fsSL https://fconidi.github.io/SysLinuxOS-Tools/client/install-repo.sh | sudo bash sudo apt install distroclone distroclone-backup snapper btrfs-progs
Oppure scarica i pacchetti .deb direttamente:
wget https://github.com/fconidi/distroClone/releases/latest/download/distroClone_1.4.10_all.deb wget https://github.com/fconidi/distroClone-backup/releases/latest/download/distroclone-backup_1.3.4_all.deb sudo apt install ./distroClone_1.4.10_all.deb ./distroclone-backup_1.3.4_all.deb
DistroClone e DistroClone Backup fanno parte del
toolchain SysLinuxOS — GPL-3.0-or-later — mantenuto da Franco Conidi aka edmond.
Approfondimenti:
DistroClone Live ISO Builder ·
DistroClone Backup & Restore ·
SysLinuxOS APT Repository
