Il programma mksquashfs è lo strumento che serve a creare nuovi file system compressi e ad accodare nuovi dati a quelli esistenti. Il formato generale della riga di comando per mksquashfs è:
bash# mksquashfs sorgente1 sorgente2 ... destinazione [opzioni]
sorgente1, sorgente2, ecc.: file o directory da aggiungere al file system risultante, indicati con percorsi assoluti o relativi.
destinazione: un file regolare (file-immagine di un filesystem ) o un dispositivo a blocchi (come /dev/fd0 o /dev/hda3) dove si voglia creare un file system SquashFS.
Note sul comportamento predefinito di mksquashfs:
Quando nuovi file sono aggiunti ad un nuovo file system o accodati ad un file system esistente, mksquashfs rinomina automaticamente i file che hanno lo stesso nome: se due o più file con nome text compaiono nella stessa directory finale, il secondo file verrà rinominato text_1, il terzo text_2 e così via.
I file duplicati vengono rimossi, così da avere una sola istanza fisica. (Dalla versione SquashFS 2.x, è possibile disabilitare l'individuazione/rimozione dei file duplicati con l'opzione -no-duplicates ).
Se la destinazione è un file system SquashFS pre-esistente, per default, i nuovi elementi sorgente vengono accodati alla directory root esistente. Consultare la tabella delle opzioni che segue per richiedere a mksquashfs di sovrascrivere interamente la destinazione o cambiare la modalità in cui elementi nuovi vengono aggiunti.
Se viene indicata una singola directory o file sorgente, essa diviene la root del nuovo file system creato. Se vengono indicati due o più file o directory, essi divengono sotto-directory della root del nuovo file system.
Il file system risultante viene arrotondato per eccesso ad un valore multiplo di 4 Kb: ciò è richiesto per file system da utilizzare su dispositivi a blocchi. Nel caso si sia certi di non averne bisogno, usare l'opzione -nopad per disabilitare l'operazione.
Si veda la prossima sezione maggiori dettagli su tutte le opzioni possibili.
Tutte le opzioni possibili di mksquashfs sono mostrate nella tabella sotto.
Tabella 1. Opzioni per la riga di comando dello strumento mksquashfs
Opzioni | Descrizione |
---|---|
-2.0 | chiede a mksquashfs di creare un file system per la versione 2.0 |
-all-root o -root-owned | rende tutti i file sul file system di destinazione proprietà dell'utente root (UID=0, GID=0) |
-always-use-fragments | divide tutti i file più grandi della dimensione di un blocco in frammenti di blocco (dalla versione 2.x). Ciò rende i rapporti di compressione più elevati |
-b [block size] | usa un blocco di dimensione [block size] per il file system (il valore predefinito per la versione 2.x è 32Kb, quello della versione 3.x, 128Kb) - può assumere i valori 4096, 8192, 16384, 32768, 65536 or 131072 byte |
-be o -le | chiede la creazione di un file system rispettivamente big endian o little endian |
-check-data | abilita verifiche ulteriori sul file system |
-e [file1] ( [file2] ... ) | specifica quali file e/o directory saranno omesse dal nuovo file system che viene creato |
-ef [file] | specifica un file che contenga la lista di file/directory da escludere |
-force-gid [GID] | imposta l'identificativo di gruppo [GID] per tutti i file del file system di destinazione (si può specificare come nome o come numero) |
-force-uid [UID] | imposta l'identificativo utente [UID] per tutti i file del file system di destinazione (si può specificare come nome o come numero) |
-info | stampa i nomi dei file, la loro dimensione originale ed il rapporto di compressione mentre vengono aggiunti al file system |
-keep-as-directory | se la sorgente è una singola directory, essa sarà una sotto-directory della root nel file system creato |
-noappend | se il file o il dispositivo di destinazione contiene già un file system compresso, lo sovrascrive, piuttosto che accodare i nuovi dati al file system esistente |
-no-duplicates | non individua/rimuove i file duplicati |
-noD o -noDataCompression | non comprime i dati |
-noF o -noFragmentCompression | non comprime i frammenti di blocco (disponibile a partire dalla versione 2.x) |
-no-fragments | non genera frammenti di blocco (disponibile a partire dalla versione 2.x; ciò produce un file system simile a quello creato dalla versione 1.x) |
-noI o -noInodeCompression | non comprime la tavola degli inode |
-nopad | non arrotonda la dimensione del file system finale ad un valore multiplo di 4 Kb |
-root-becomes [name] | questa opzione può essere utilizzata quando si accodano dati ad un file system compresso pre-esistente; ciò produce una nuova root, e una directory [name] che contiene tutti i file e le directory pre-esistenti. |
-version | stampa un messaggio con versione, copyright e licenza |
-recover [name] | ripristina i dati del file system utilizzando il file di ripristino [name] (3.3) |
-no-recovery | non crea file di ripristino (3.3). |
-no-exports | non consente l'esportazione del file system mediante NFS (3.x) |
-no-sparse | non esegue il controllo per file sparsi (3.x) |
-processors [number] | imposta il numero delle CPU per creare il file system. Il comportamento predefinito è quello di utilizzare tutti i processori disponibili (3.x) |
--read-queue [size] | imposta la coda di input a [size] Mb. (Il valore predefinito è 64 Mb)(3.x) |
-write-queue [size] | imposta la coda di output a [size] Mb (3.x) |
-sort [sort_file] | ordina i file in funzione della priorità nel [sort_file] (3.x) |
-wildcards | abilita i metacaratteri estesi della shell per escludere directory/file (da usare con l'opzione -e) |
-regex | abilita l'utilizzo delle espressioni regolari POSIX (3.3) |
Nella maggior parte dei casi, le opzioni predefinite per compressione e blocchi, permettono a mksquashfs di ottenere il miglior rapporto di compressione possibile.
Il programma unsquashfs è lo strumento che serve ad estrarre dati dal file system compresso. Il forma generale della riga di comando per unsquashfs è:
unsquashfs [opzioni] target [file/directory da estrarre]
target è il file system compresso da estrarre.
Note per il comportamento di unsquashfs:
Non specificando alcun percorso di destinazione, unsquashfs estrae il file system compresso nella directory ./squashfs-root .
Lo strumento non estrae un file system compresso su una directory già esistente a meno che non venga specificata l'opzione -f.
Si può specificare sulla riga di comando, un numero a piacere di file o directory da estrarre e gli oggetti da estrarre possono essere anche indicati in file con l'opzione -e [file].
Le possibili opzioni per unsquashfs sono mostrate nella tabella sotto.
Tabella 2. Opzioni per la riga di comando dello strumento unsquashfs
Opzione | Descrizione |
---|---|
-v[ersion] | stampa un messaggio con versione, copyright e licenza. |
-i[nfo] | stampa i nomi dei file mentre vengono estratti dal file system |
-l[ist] | elenca il contenuto del file system compresso senza estrarre i file |
-li | elenca i file con i loro attributi mentre vengono estratti (3.3) |
-ll | elenca i file del file system compresso senza eseguire estrazione (3.3) |
-d[estination] path | specifica un percorso di destinazione per gli oggetti estratti |
-f[orce] | se i file esistono li sovrascrive |
-s[tat] | mostra le informazioni sul superblocco del file system (può individuare la versione del file system e le opzioni usate per comprimerlo - 3.3) |
-e[f] [extract file] | elenca le directory e i file da estrarre (le voci vanno date una per linea) (3.3) |
-r[egex] | utilizza epressioni regolari POSIX per gli oggetti da estrarre (3.3) |
Nota che a partire dal rilascio 3.x è possibile estrarre anche file system creati con la versione 1.x o 2.x di mksquashfs.