Tag: file system

file system
Formazione, Sistemi, Software

FAT32 e NTFS che differenze ci sono?

FAT32 e NTFS che differenze ci sono? Scopriamolo insieme in questo articolo!

FAT32 e NTFS sono i file system utilizzati in un sistema operativo. NTFS è il successore del FAT32 che viene utilizzato nelle versioni più recenti dei sistemi operativi come Windows NT e 2000 e nelle versioni successive mentre FAT32 è la versione più vecchia dei file system e utilizzata nelle versioni precedenti del sistema operativo come DOS e Windows versione prima di XP.

La differenza precedente tra FAT32 e NTFS è che il file system NTFS è in grado di tracciare le modifiche commesse nel sistema con l’aiuto della manutenzione del journal mentre non è il caso in FAT32, anche se in FAT32 è ancora utilizzato nei supporti rimovibili e nell’unità di archiviazione. Inoltre, NTFS supporta grandi dimensioni di file e volume e fornisce un’organizzazione dei dati efficiente.

FAT32 e NTFS

Cos’è un file system?

Ma cos’è di fatto un file system? È una tecnica di organizzazione e memorizzazione dei dati sul disco, inoltre specifica quale tipo di attributi possono essere allegati a un file come nomi di file, permessi, altri attributi.

Tabella comparativa

Base per il confrontoFAT32NTFS
Di baseStruttura sempliceStruttura complessa
Numero massimo di caratteri supportati in un nome file83255
Dimensione massima del file4GB16TB
crittografiaNon fornitoFornito
SicurezzaTipo di reteLocale e rete
ConversioneconsentitoNon autorizzato
Tolleranza di erroreNessuna disposizione per la tolleranza d’errore.Risoluzione dei problemi automatica
Compatibilità con i sistemi operativiVecchia versione di Windows – Win 95/98 / 2K / 2K3 / XPVersioni successive: Win NT / 2K / XP / Vista / 7
Elenco di controllo di accessoNo
Spazio su disco a livello utenteNo
Diario e registro dei canaliAssenteOffre l’inserimento nel journal per tenere traccia delle operazioni precedenti.
PrestazioneBuonoMeglio di FAT32
Collegamenti duri e morbidiNon presentecontiene
Accesso alla velocitàMeno relativamenteDi Più
CompressioneNessuna disposizione di compressione.Supporta la compressione dei file.

Definizione di FAT32

Come accennato in precedenza, il FAT32 è il più vecchio file system sviluppato negli anni ’70 disponibile per il sistema operativo Windows. È stato concepito essenzialmente per l’unità disco floppy con una dimensione inferiore a 500 K. Esistono in pratica tre versioni di FAT – FAT12, FAT16 e FAT32 e differiscono nella dimensione del file e della struttura sul disco. Il file system FAT è stato utilizzato per la prima volta in MS-DOS, dove la dimensione massima del disco rigido può essere di 32 MB e comprende settori di 512 partizioni K. È comunemente usato in unità rimovibili e dispositivi di archiviazione.

La dimensione massima di un file nell’unità FAT32 non può essere superata di oltre 4 GB e di conseguenza le partizioni realizzate in FAT32 dovrebbero essere inferiori a 8 TB. Il principale demerito dell’uso di FAT32 è che non fornisce in pratica alcuna sicurezza. Infatti la precedente versione FAT16 del file system FAT soffre della frammentazione interna e non ha la protezione di accesso per il file.

Gestione dello spazio su disco di FAT32

Il file system FAT32 utilizza un’allocazione collegata che memorizza i dati di controllo separatamente dal file system. Una tabella di allocazione file di un disco contiene di fatto un elemento per ogni blocco di disco nel disco in una matrice. Il blocco del disco assegnato a un file, il componente FAT associato contiene l’indirizzo del successivo blocco del disco. Pertanto, il blocco del disco e il suo elemento FAT formano in modo collaborativo un’unità che contiene le stesse informazioni del blocco del disco sotto forma di allocazione collegata.

La voce della directory di un file contiene l’indirizzo del suo primo blocco del disco e l’elemento FAT corrispondente a questo blocco del disco contiene l’indirizzo del secondo blocco del disco e così via. L’ultimo elemento FAT del blocco disco include inoltre il codice speciale per indicare la fine del file.

Definizione di NTFS

NTFS è l’ultima versione del file system ideato alla fine degli anni ’90 per l’unità di sistema Windows e le unità rimovibili. Il NTFS è stato creato infatti con l’intento di rimuovere le limitazioni dei file system FAT. Include caratteristiche come recupero dati, multi-streaming, tolleranza agli errori, sicurezza, dimensioni file e file system estesi, nomi UNICODE.

NTFS gestisce un giornale che tiene traccia delle operazioni eseguite nell’unità e può recuperare rapidamente gli errori, le copie shadow per il backup, la crittografia, i limiti delle quote disco e inoltre gli hard link. NTFS supporta una maggiore dimensione del file e volume dell’unità rispetto a FAT32. Impedisce in pratica l’accesso non autorizzato al contenuto dei file applicando un sistema di crittografia denominato Encryption File System che utilizza la sicurezza della chiave pubblica.

Gestione dello spazio su disco di NTFS

Il file system NTFS non si basa sulle dimensioni del settore sui diversi dischi. Utilizza infatti un concetto dei cluster e il cluster è un gruppo di settori contigui per l’allocazione dello spazio su disco. Il cluster potrebbe contenere ad esempio 2 n numero di settori. Una partizione logica sul disco è nota come volume e utilizza un file bitmap per indicare i cluster allocati e liberi nel volume. C’è anche un file chiamato come file di cluster non valido per mantenere il registro dei cluster inutilizzabili. Un set di volumi offre un modo per superare la capacità delle partizioni che può contenere fino a 32 volumi.

Il volume NTFS comprende la tabella file master (MFT), il settore di avvio e inoltre alcuni file utente e di sistema. La tabella dei file master è poi simile a una tabella FAT e include tutti i dettagli sui file e le cartelle sul volume. L’esistenza del settore di avvio rende ogni volume di fatto avviabile.

Differenze chiave tra FAT32 e NTFS

Le differenze che ci sono tra FAT32 e NTFS sono molteplici:

  1. Il FAT32 è semplice mentre la struttura NTFS è piuttosto complicata.
  2. NTFS può supportare dimensioni di file e volume maggiori insieme a nomi di file di grandi dimensioni rispetto al file system FAT32.
  3. FAT32 non fornisce crittografia e molta sicurezza mentre NTFS è abilitato con sicurezza e crittografia.
  4. È abbastanza facile convertire un file system FAT in un altro senza perdere dati. Al contrario, la conversione NTFS è difficile da raggiungere.
  5. Le prestazioni NTFS sono comparativamente migliori di FAT32 in quanto fornisce anche la tolleranza di errore.
  6. I file sono accessibili più velocemente nel caso di NTFS. Al contrario, FAT32 è più lento di NTFS.
  7. NTFS fornisce funzionalità come l’inserimento nel journal e la compressione, che non sono fornite da FAT32.

Vantaggi file system FAT32

  • Funziona in modo efficiente in partizioni di 200 MB.
  • Fornisce compatibilità con diversi sistemi operativi e frequentemente utilizzato come partizione primaria su sistemi multiboot.

Vantaggi file system NTFS

  • Altamente sicuro
  • Esegui bene anche nelle partizioni oltre i 400 MB.
  • La struttura di file e directory migliora le prestazioni.
  • Meno suscettibile alla frammentazione.

Svantaggi file system di FAT32

  • Le partizioni oltre i 200 MB possono degradare le prestazioni.
  • Insicuro.
  • Suscettibile alla frammentazione.
  • La struttura delle directory non ha un’organizzazione standard.

Svantaggi file system NTFS

  • NTFS non è supportato in maniera pervasiva.
  • Le prestazioni si degradano in partizioni di 400 MB, il che significa che quando i piccoli volumi contengono file di piccole dimensioni, è possibile generare il sovraccarico.

Conclusione

Tra i file system FAT32 e NTFS, il file system NTFS è una tecnologia più recente che offre di fatto più funzionalità rispetto a FAT32 quali affidabilità, sicurezza e controllo degli accessi, efficienza di archiviazione, dimensioni avanzate e nome del file. Anche se, il FAT32 è ancora in uso a causa della sua compatibilità.

contattaci
shell linux
Formazione, Software

Shell Linux: i comandi principali

Le persone che si approcciano per la prima volta alle distribuzioni Linux potrebbero ignorare del tutto l’esistenza della shell linux o dell’interprete dei comandi. Questo perché i moderni sistemi operativi fanno completamente affidamento sulle GUI (Graphical User Interface) moderne per ogni sorta di interazione tra utente e computer. Dunque oggi non è più obbligatorio apprendere una lista di comandi ben precisi per interagire con i vari applicativi o con i file presenti all’interno del disco fisso. Tuttavia risulta molto utile sapersi muovere all’interno del file system e apprendere almeno qualcuno dei comandi principali del terminale shell linux.

Anche se può sembrare superfluo sapersi destreggiare con le funzioni della CLI (Command Line Interface) è comunque molto interessante e di grande utilità. Avere una marcia in più e comprendere il funzionamento base della piattaforma che si sta utilizzando ci aiuta anche a snellire e a rendere più fluide talune procedure.

Spostarsi all’interno del file system Linux

Il file system è fondamentalmente quel meccanismo con cui il sistema operativo organizza ed archivia i file sul disco o su altre tipologie di memoria di massa. Gli utenti solitamente interagiscono con il file system tramite un programma chiamato File Manager , come esempio Finder su MacOS oppure Esplorare Risorse in Windows 10, che non fa altro che rappresentare con un’interfaccia user friendly il file system e le varie directory, che oggi comunemente indichiamo come “cartelle”, ovvero delle entità che sostanzialmente racchiudono ed elencano i file dell’utente.

file system linux

Muoversi tra le varie directory tramite la shell Linux non è complicato, anzi risulta essere molto più intuitivo di quanto si possa supporre. Prima di poter iniziare ad esplorare i vari comandi principali bisogna approfondire brevemente il concetto di file system, delle directory e scoprire come sono organizzati i file all’interno delle distribuzioni.

Su Linux praticamente tutti i file dell’utente e le relative configurazioni della sessione sono racchiuse dentro la home directory,  indicata graficamente dal terminale con questo simbolo “~“,  in modo tale da separarli nettamente dai dati del sistema. I componenti core della distribuzione invece vengono posizionati nella root directory, indicata dalla shell Linux cosi “/“.

Se quindi si è alla ricerca di qualche documento generato dall’utente tramite un applicativo allora ci si dovrà indirizzare verso la home, mentre se invece se si necessità di modificare un elemento del sistema in questo caso sarà necessario partire dalla root.

Comandi più usati nella shell Linux

Parte dei comandi da shell Linux sono ereditati direttamente da Unix e dagli standard POSIX (Portable Operating System Interface for Unix). Per iniziare ad approcciarsi col concetto di file system basta tenere a mente due comandi principali della shell Linux molto semplici, ovvero: cd ed ls.

Nella maggior parte dei casi le distribuzioni Linux adottano Bash, acronimo di Bourne Again Shell, come CLI di riferimento, questo perché risulta essere molto affidabile e versatile, tuttavia esistono diverse alternative online altrettanto valide.

Il primo viene usato per spostarsi tra le directory, dunque per posizionarsi dentro la cartella chiamata Documenti si deve digitare:

cd Documenti

Il secondo invece serve per listare i file contenuti all’interno della directory su cui siamo posizionati, ecco un output d’esempio:

[email protected]:~/Documenti$ ls
fattura.pdf scansione.jpg note.txt

Come è possibile notare il comando ls ci ha mostrato come risultato tutti i file presenti dentro Documenti.  Tuttavia da questa lista vengono esclusi i file e le cartelle nascoste. Per mostrare anche questi elementi bisogna aggiungere al comando l’opzione “-a

[email protected]:~/Documenti$ ls -a
fattura.pdf scansione.jpg note.txt .ricevute.odt .configurazioni

Ora poniamo il caso volessimo modificare con Nano, un editor di testi da shell Linux, il file invitati.txt presente dentro la directory Foto. Basta dare questa sequenza di comandi:

cd

cd Foto

nano invitati.txt

oppure:

cd ~/Foto

nano invitati.txt

oppure ancora:

nano ~/Foto/invitati.txt

Ovviamente anche in questa directory l’utente può visualizzare tutti i file presenti tramite ls:

[email protected]:~/Foto$ ls

invitati.txt FotoCompleanno

Creare, copiare, spostare ed eliminare file con shell Linux

Creare una nuova cartella e posizionarci dei file dentro è altrettanto semplice tramite mkdir ed mv. Il primo comando genera la nuova directory, mentre il secondo si occupa di spostare i file. Ecco un esempio concreto:

mkdir "NuovaCartellaImmagini"

mv foto1 foto2 foto2 ~/Foto/NuovaCartellaImmagini

Come è possibile notare tramite mv si va ad indicare non solo i file da spostare ma anche la relativa destinazione, che in questo è la cartella chiamata NuovaCartellaImmagini. Oltre che per i singoli file il comando mv viene impiegato anche per muovere intere cartelle, che in ambito Linux sono sempre considerati come file, ed il loro relativo contenuto:

mv NuovaCartellaImmagini ~/Documenti

Nel caso in cui volessimo fare una copia del file basta rivolgersi al comando cp:

cp foto1 foto2 foto2 ~/Foto/NuovaCartellaImmagini

oppure per copiare un’intera cartella:

cp NuovaCartellaImmagini ~/Documenti

Anche in questo caso oltre che il nome del file, o della directory, da copiare sarà sempre necessario indicare al terminale l’esatta posizione del file system dove posizionare la copia dei dati.

Eliminare un file è altrettanto semplice con il comando rm:

rm foto1

Mentre nel caso di una directory è necessario inserire l’attributo “-r“:

rm -r NuovaCartellaImmagini

Quando si usa il comando rm è sempre bene porre estrema attenzione sul nome del file e sul percorso esatto. Infatti se si esegue tale operazione con i poter di utente amministratore è possibile anche eliminare file vitali per il corretto funzionamento del sistema operativo.

sudo ed escalation dei privilegi ad utente amministratore 

Come abbiamo già detto il file system delle distribuzioni Linux divide nettamente i file dell’utente da quelli del sistema operativo. Tale suddivisione non è solo organizzativa ma prevede anche delle barriere d’accesso e di modifica dei dati presenti nella root. L’utente standard non ha dunque i poteri per modificare, cancellare o creare nuovi file dentro la root directory. Per farlo o dovrà eseguire il login come utente amministratore, possibilità che in certe distribuzioni è disattivata di base per motivi di sicurezza, oppure eseguire un escalation temporanea dei privilegi tramite il tool sudo, acronimo di substitute user do.

Sudo permette all’utente di ottenere i poteri di amministratore per un breve periodo di tempo, dopo aver inserito una password specifica, in modo tale da eseguire modificare ai file di sistema. Per fare un esempio concreto, ecco cosa succede se tentiamo di eliminare una cartella dentro la root senza i privilegi necessari:

[email protected]:/$ rm -r Foto
rm: cannot remove 'Foto': Permission denied

se invece usiamo sudo:

sudo rm -r Foto

L’operazione prosegue senza interruzioni da parte di Bash, che andrà a rimuovere il file desiderato.

grep e find: cercare file nel computer

Bash offre degli strumenti di ricerca molto potenti e precisi chiamati grep e find. Nel caso l’utente non riesca a trovare manualmente i propri file, o dei dati all’interno di essi, si potrà rivolgere a questi due comandi.

La sintassi è molto facile da padroneggiare. Poniamo il caso di dover cercare il documento fatture2021.pdf presente nel nostro computer:

find ~ -name fatture2021.pdf

/home/enjoy/Documenti/fatture2021.pdf

Con tale comando abbiamo dunque indicato alla shell Linux di cercare dentro la home directory, ma possiamo anche indicare una cartella più specifica, il file nominato, per mezzo dell’attributo -name, fatture2021.pdf. Bash dunque ha risposto indicato l’esatto percorso in cui reperire tale documento ovvero la directory Documenti.

find dispone di vari attributi con cui eseguire ricerche più dettagliate, ad esempio in base alla dimensione:

find ~/Video/Compleanno -size +1G

/home/enjoy/Video/Compleanno/filmato.mp4

/home/enjoy/Video/Compleanno/filmato3.mp4

/home/enjoy/Video/Compleanno/filmato5.mp4

In questo caso find ci ha listato tutto i filmati più grandi di 1GB presenti dentro la cartella Compleanno. Se invece ci interessa restringere il campo di ricerca ai video modificati o registrati nell’ultima settimana dobbiamo utilizzare l’attributo -mtime seguito dall’indicazione temporale in giorni:

find ~/Video/Compleanno -name '*.mp4' -mtime -7

/home/enjoy/Video/Compleanno/filmato7.mp4

/home/enjoy/Video/Compleanno/filmato8.mp4

/home/enjoy/Video/Compleanno/filmato9.mp4

Con tali attributi find ha elencato tutti i file video con estensione .mp4, tramite l’uso del carattere asterico posizionato prima dell’estensione, modificati negli ultimi 7 giorni.

Il comando grep può gestire ricerche similari ed inoltre è capace di ricercare dati all’interno dei file dell’utente:

grep "Mario Rossi" fattura.txt

Mario Rossi ha pagato 103€ il 01/01/2021

Con tale comando, senza dover aprire il documento, è possibile capire al volo se dentro il file fattura.txt è presente la dicitura Mario Rossi. Ovviamente con grep si possono fare ricerche del genere su più file contemporaneamente:

grep "Mario Rossi" fattura2.txt fattura3.txt fattura4.txt

Per estendere la ricerca a tutti i file presenti nella directory, e nelle relative sottodirectory, dovremo utilizzare l’attributo -R:

[email protected]:~/Documenti$ grep -R "Mario Rossi"
Fatture/fattureGennaio2021.txt:Mario Rossi ha pagato 103€ il 01/01/2021

Fatture/fattureGennaio2021.txt:Mario Rossi ha pagato 97€ il 14/01/2021

fatturamarzo2021.txt:Mario Rossi ha pagato 124€ il 27/03/2021

Con tale opzione verranno elencati il nome dei file, con la loro posizione precisa nel file system, che contengono il nominativo Mario Rossi.

Informazioni sull’hardware utilizzato

Tramite CLI l’utente può ottenere informazioni dettagliate sull’hardware presente sul computer in uso. Dati che posso tornare utili nel caso sia necessario installare qualche driver specifico o monitorare il corretto funzionamento di qualche device particolare.

Ad esempio con il comando lshw il sistema ci elenca le principali caratteristiche hardware del computer:

[email protected]:~$ lshw
pcdesktop
description: Computer
width: 64 bits
capabilities: smp
*-core
description: Motherboard
physical id: 0
*-memory
description: System memory
physical id: 0
size: 15GiB
*-cpu
product: Intel(R) Core(TM) i5-4690K CPU @ 3.50GHz
vendor: Intel Corp.
physical id: 1
bus info: [email protected]
capacity: 3501MHz
width: 64 bits

L’output ricevuto da lshw mostra dunque la tipologia del sistema, la quantità di RAM ed il modello di CPU. Con comandi similari Bash è capace di indicare con precisione anche la tipologia ed il modello esatto di periferiche installate sulle porte PCI ed USB del proprio PC:

[email protected]:~$ lspci

00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 03)
00:1f.2 USB Controller: Intel Corporation 82801BA/BAM USB Controller #1 (rev 03)
01:00.0 VGA compatible controller: NVIDIA Corporation GK104GLM [Quadro K5000M] (rev a1)

[email protected]:~$ lsusb

Bus 005 Device 001: ID 0000:0000
bDeviceClass 9 Hub
bDeviceProtocol 1 Single TT
iProduct 2 EHCI Host Controller

Bus 004 Device 006: ID 0a5c:2110 Broadcom Corp.
bDeviceClass 224 Wireless
bDeviceProtocol 1 Bluetooth
iProduct 2 BCM2045B
(Bus Powered)

Come è possibile notare lspic ed lsusb forniscono non solo il tipo di device installato sul sistema ma anche i dettagli del chipset implementato. Questo elemento consente all’utente di individuare con precisione il modello delle periferica installata, facilitando enormemente il lavoro di ricerca dei driver o di software compatibili.

Gestione dei processi e kill delle applicazioni

Le distribuzioni dispongono di diverse utility per poter monitorare e gestire i processi in esecuzione nel sistema. Una delle più note è top, un task manager da shell Linux che da accesso a tutta una serie di strumenti per tenere sotto controllo gli applicativi avviati dall’utente o dalla distribuzione.

[email protected]:~$ top

top - 18:58:01 up 15 min, 0 users, load average: 0.52, 0.58, 0.59
Tasks: 4 total, 1 running, 3 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.9 us, 0.0 sy, 0.0 ni, 92.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 16334.3 total, 10589.6 free, 5520.8 used, 224.0 buff/cache
MiB Swap: 14228.4 total, 14064.3 free, 164.1 used. 10682.9 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 8940 320 272 S 0.0 0.0 0:00.09 init
9 root 20 0 8940 228 184 S 0.0 0.0 0:00.01 init
10 davide 20 0 18076 3596 3472 S 0.0 0.0 0:00.07 bash
41 davide 20 0 18904 2068 1452 R 0.0 0.0 0:00.01 top
481 davide 20 0 25388 4636 3904 S 1.0 0.0 0:00.03 mc

Il tool top non solo elenca i processi attivi, ed i relativi utenti che li hanno avviati, ma fornisce anche l’ID unico dell’applicativo, i dati sui consumi delle risorse e lo status delle applicazioni. Tramite l’ID numerico l’utente può terminare l’applicazione direttamente da terminale sfruttando il comando kill.

Ad esempio se si volesse chiudere forzatamente il file manager Might Commander, indicato con l’ID 481 su top, basterà digitare in Bash:

kill 481

Il comando kill è molto potente e va usato con attenzione perché, con i relativi poteri di utente amministratore, è capace di chiudere anche i programmi base del sistema operativo e dunque, potenzialmente, rendere la sessione di lavoro inutilizzabile fino al prossimo riavvio del computer.

Le distribuzioni Linux sono un ottimo punto di partenza per tutte quelle persone che vogliono muovere i primi passi in un sistema Unix-like e sperimentare con Bash o più in generale con la CLI.  Nonostante oggigiorno non sia essenziale sapersi destreggiare con il terminale tali conoscenze potranno essere molto utili per rendere il proprio workflow più snello ed efficiente. Concludendo sapersi muovere all’interno del file system di una Shell Linux e apprendere alcuni dei comandi principali può sembrare per certi aspetti anacronistico, ma è molto utile e al contempo funzionale.

contattaci