@Tetsujin mi ha dato la giusta direzione, OS X sparse di pacchetti/immagini ce l'hanno analog in Linux e si tratta di file sparsi.
I file sparsi crescono man mano che crescono i dati in essi contenuti. Possono contenere qualsiasi filesystem Linux, comprese eventuali varianti moderne con compressione integrata, come btrfs.
Quanto segue mostra come creare un'immagine btrfs compressa sparsa. btrfs il supporto in Debian e nelle sue derivate (come Ubuntu) può essere abilitato installando btrfs-tools pacchetti (sudo apt-get install btrfs-tools ). Ho aggiunto un ext4 sparso immagine anche per confrontare velocità e dimensioni. Tutte le operazioni sono state eseguite su Debian 7.8 Wheezy (oldstable al 30 aprile 2015).
-
Crea file sparsi vuoti di qualsiasi dimensione. Lascia che sia 5 terabyte:
example@unixlinux.online:~$ truncate -s 5T ext4.sparse btrfs.sparse -
Formattali
a ext4 :
example@unixlinux.online:~$ mkfs.ext4 ext4.sparse
mke2fs 1.42.5 (29-Jul-2012)
<...>
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
a btrfs :
example@unixlinux.online:~$ mkfs.btrfs btrfs.sparse
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
fs created label (null) on btrfs.sparse
nodesize 4096 leafsize 4096 sectorsize 4096 size 5.00TB
Btrfs Btrfs v0.19
-
Crea punti di montaggio:
example@unixlinux.online:~$ mkdir ext4_mount btrfs_mount -
Montali. Non dimenticare
loopopzione:
ext4 :
example@unixlinux.online:~$ sudo mount -o loop -t ext4 ext4.sparse ext4_mount
btrfs (non dimenticare compress opzione (può essere zlib o lzo )):
example@unixlinux.online:~$ sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount
- Ecco fatto! I file system vengono creati e montati, appaiono come 5 TB al sistema operativo, ma in realtà occupano pochissimo spazio:
df :
example@unixlinux.online:~$ df -h | grep _mount
/dev/loop0 5.0T 189M 4.8T 1% /home/a/ext4_mount
/dev/loop1 5.0T 120K 5.0T 1% /home/a/btrfs_mount
du :
example@unixlinux.online:~$ du -h *.sparse
4.3M btrfs.sparse
169M ext4.sparse
- A scopo di test ho creato un enorme file di testo da 1,3 GB con uno schema ripetitivo. Sarà
cp'd a entrambi i file system appena creati:
ext4 :
example@unixlinux.online:~$ time sudo cp /store/share/bigtextfile ext4_mount/
real 0m12.344s
user 0m0.008s
sys 0m1.708s
btrfs :
example@unixlinux.online:~$ time sudo cp /store/share/bigtextfile btrfs_mount/
real 0m3.714s
user 0m0.016s
sys 0m1.204s
-
Come abbiamo visto nel passaggio precedente, btrfs si è rivelato molto più veloce durante il trasferimento di dati altamente comprimibili, rispetto al buon vecchio ext4 . Controlliamo in seguito le dimensioni dei filesystem:
example@unixlinux.online:~$ df -h | grep _mount /dev/loop0 5.0T 1.5G 4.8T 1% /home/a/ext4_mount /dev/loop1 5.0T 46M 5.0T 1% /home/a/btrfs_mount -
btrfs si è rivelato molto più efficiente in termini di spazio. Infine, controlliamo anche le dimensioni dei file sparsi:
example@unixlinux.online:~$ du -h *.sparse 50M btrfs.sparse 1.4G ext4.sparse
Questo è tutto. Se necessario, i file sparsi possono essere ulteriormente ingranditi. btrfs può essere ridimensionato anche online.
Ottima soluzione per il normale rsync backup. Ma non dimenticare di eseguire il backup di questi file anche in modo più tradizionale, dal momento che btrfs è ancora un filesystem sperimentale .
Ulteriori informazioni su Arch Wiki:https://wiki.archlinux.org/index.php/Sparse_file e https://wiki.archlinux.org/index.php/Btrfs