Dopo aver letto questa discussione di speedyant, sulla creazione di grandi file, con dimensioni predefinite, mi sono interessato alla cosa e ho raccolto una serie di comandi per fare questa operazione.
Perché dovremmo creare un file di grosse dimensioni?
Principalmente per testare le prestazioni di un disco fisso in fase di copia/creazione di questi file, oppure la velocità di trasferimento in una copia tra computer in rete. Terza cosa, suggerita in molti articoli che ho letto, è riempire gli spazi vuoti di un disco fisso, per impedire il recupero dei file che vi erano presenti e sono stati cancellati, senza ricorrere a programmi esterni.
Riguardo a questo terzo punto ho qualche dubbio, ma mi spiegherò meglio dopo.
Una sola avvertenza prima di cominciare, non riempite il disco di sistema con questi comandi, a un certo punto blocchereste il sistema operativo perché non ha più spazio dove scrivere i suoi file temporanei.
Per il calcolo delle dimensioni da inserire nei vari comandi, se volessimo creare un file da 5 Gb esatti, per esempio, fate riferimento all’ultima parte dell’articolo.
Fsutil
Il comando che ci serve per creare uno, o più file, di dimensione a nostra scelta è fsutil file createnew
a cui dobbiamo aggiungere il nome del file, il percorso dove salvarlo e la sua dimensione:
fsutil file createnew e:\riempi.txt 1000
Come vedete, le dimensioni reali dei file non sono proprio quelle che avete inserito in fase di creazione. Anche qui, fate riferimento alla parte finale dell’articolo se volete avere un file di una dimensione ben precisa.
Il “problema” di questi file è che sono vuoti, se ne apriamo uno non vediamo nulla, però sono molto veloci da creare.
Se abbiamo bisogno di creare tanti file di una certa dimensione, possiamo creare un loop del comando fsutil che ripete la creazione del file per 1000 volte e il nome del file cambia sempre in quanto è presente la variabile %I che inserisce un numero progressivo all’inizio del nome del file.
for /L %I in (1,1,1000) do fsutil file createnew e:\%I-100MB_file_test.bin 100048576
PowerShell
Con questo script di PowerShell possiamo creare dei file di dimensione massima di un gigabyte.
$out = New-Object byte[] 1Gb;
(New-Object Random).NextBytes($out);
[IO.File]::WriteAllBytes("d:\testfile.txt", $out)
La differenza, rispetto a fsutil, è che questo tipo di file contiene dei dati casuali, a seconda delle dimensioni scelte può impiegare parecchio tempo a crearli.
Per eseguire un loop del comando e creare un certo numero di file, possiamo utilizzare questo script:
for ($i=1; $i -le 10; $i++)
{$out = new-object byte[] 1073741824;
(new-object Random).NextBytes($out);
[IO.File]::WriteAllBytes("e:\file$i.txt", $out)}
Possiamo variare il numero di file da creare, $i -le 10, o il percorso dove salvarli, il nome del file creato cambia sempre per la presenza della variabile $i nel suo nome.
Il limite di questi script è che non si possono creare file più grandi di 1Gb.
Girando per il Web ho trovato uno script che crea il file, di dimensione più grande, però nella cartella Temp dell’account di Windows.
# Set file size
$intendedSize = 10GB
# Create output buffer
$buffer = [byte[]]::new(4KB)
# Create RNG
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::Create()
# Create temp file, open writable filestrem
$tempFile = [System.IO.Path]::GetTempFileName() |Get-Item
$fileStream = $tempFile.OpenWrite()
do {
# Fill buffer, write to disk, rinse-repeat
$rng.GetBytes($buffer)
$fileStream.Write($buffer, 0, $buffer.Length)
} while($fileStream.Length -lt $intendedSize)
# Dispose if filestream + RNG
$fileStream.Dispose()
$rng.Dispose()
Il recupero dati
Mi sono cimentato in questa prova anche per verificare se da un disco fisso pieno di dati si potesse ancora recuperare qualche file cancellato in precedenza.
Ho creato così una lunga serie di file sino a riempire completamente il disco E.
A dare retta a Recuva qualche cluster non era stato sovrascritto e quindi alcuni file, non troppo grandi, è riuscito a recuperarli.
Wise Data Recovery invece trova tantissimi file e cartelle, magari hanno date e dimensioni molto strane, però anche qui sono riuscito a ripristinare molti file leggibili e funzionanti.
Riempire il disco fisso di dati non mi ha messo al sicuro dalla possibilità di recuperare vecchi file cancellati in precedenza.
Dimensioni del file
Se volete creare dei file di una dimensione molto precisa potete utilizzare questo convertitore online.