Se volete creare un backup dei vostri file più importanti, almeno di quasi tutti (spiegherò dopo il perché), senza utilizzare programmi di terze parti è possibile farlo con PowerShell e il suo cmdlet Compress-Archive.

Creazione archivio

Il commando Compress-Archive -Path D:\Downloads -DestinationPath d:\backup\new permette di creare un archivio compresso, chiamato new.zip (l’estensione viene aggiunta automaticamente) del contenuto della cartella d:\downloads nel destinationspath d:\backup.

Oppure create l’archivio di backup inserendo sempre il nome completo del file con l’estensione.

Come creare archivio zippato PowerShell poi decomprimerlo

Provando a mettere a confronto gli archivi creati da PowerShell e quelli di 7-Zip, di cartelle con sole immagini, documenti Office e PDF, oltre a file di tipo misto, la dimensione è sempre a favore di 7-Zip, anche se la differenza non è poi così elevata (almeno non troppo).

Come creare archivio zippato PowerShell poi decomprimerlo

Ho detto prima che si può fare il backup di quasi tutti i file più importanti perché Compress-Archive ha un limite.

Esso si basa su Microsoft .NET Framework API System.IO.Compression.ZipArchive per la compressione dei file, per una limitazione dell’API, la dimensione massima del file che è possibile comprimere utilizzando Compress-Archive è attualmente 2 GB.

Quindi se provate a comprimere dei file troppo grandi, otterrete un poco comprensibile messaggio in rosso come quello che vedete nell’immagine. Questa limitazione esclude dal backup tutte quelle immagini ISO, e archivi di posta, molto grandi.

Come creare archivio zippato PowerShell poi decomprimerlo

L’opzione -update permette di aggiornare il contenuto di un archivio già esistente inserendovi i file nuovi o modificati Compress-Archive -Path “d:\downloads” -DestinationPath d:\backup\new -update

Come creare archivio zippato PowerShell poi decomprimerlo

Al comando di compressione è possibile aggiungere l’opzione -compressionlevel con tre possibili livelli, fastest, nocompression e optimal.

Il comando diventerà simile a questo Compress-Archive -Path “D:\Immagini” -DestinationPath d:\backup\immagini_fastest -compressionlevel fastest e nella foto vedete le dimensioni degli archivi.

Come creare archivio zippato PowerShell poi decomprimerlo

Se aggiungiamo l’opzione -force al comando di compressione, andremo a sovrascrivere, senza richiesta di conferma, eventuali archivi presenti nella cartella destinazione che hanno lo stesso nome. Compress-Archive -Path “D:\Immagini” -DestinationPath d:\backup\immagini.zip -force

Invece l’opzione -confirm permette di inserire una richiesta di conferma prima di avviare la creazione dell’archivio

Come creare archivio zippato PowerShell poi decomprimerlo

Decomprimere l’archivio

Il cmdlet Expand-Archive serve a espandere l’archivio che abbiamo creato in precedenza, con il comando Expand-Archive D:\Backup\new.zip -DestinationPath D:\ andiamo ad estrarre il contenuto del file new.zip nel disco D:\, la cartella di destinazione Downloads viene ricreata, se non presente, se invece esiste e ci sono gli stessi file all’interno questi non vengono sovrascritti.

Come creare archivio zippato PowerShell poi decomprimerlo

Per sovrascrivere, senza richiesta di conferma, eventuali file già presenti con lo stesso nome va utilizzata l’opzione -force.

Attenzione, questa opzione cancella il file presente nella cartella di destinazione, che potrebbe modificato più di recente rispetto al file compresso, e lo sostituisce con quello presente nell’archivio zippato.

Come creare archivio zippato PowerShell poi decomprimerlo

Il commando Expand-Archive D:\Backup\new.zip estrae il contenuto dell’archivio nella cartella corrente, quindi in C:\Users\crazy.cat.

Per sicurezza, se vi serve solo recuperare qualche file da backup consiglierei sempre questo tipo di estrazione, in una cartella diversa dall’originale del backup, così da non perdere file importanti e aggiornati dopo il backup.

Come creare archivio zippato PowerShell poi decomprimerlo

Se nel nome del file archivio ci sono dei caratteri particolari, per esempio le parentesi quadre o qualsiasi lettera non italiana, per estrarre il contenuto del file bisogna aggiungere -LiteralPath al comando.

Come creare archivio zippato PowerShell poi decomprimerlo

Se vogliamo che PowerShell ci mostri cosa sta facendo, durante la compressione o decompressione dei file, possiamo sempre aggiungere l’opzione -verbose al comando.

Come creare archivio zippato PowerShell poi decomprimerlo

Eseguire lo script

Se volete eseguire lo script più volte al giorno, o solo in particolari momenti, potete utilizzare l’utilità di pianificazione di Windows.

Per ulteriori indicazioni, ed esempi, potete fare riferimento alle pagine Microsoft sul cmdlet compress-archive e sul cmdlet expand-archive.

Conclusioni

Questi due cmdlet possono essere utili per pianificare dei regolari backup dei documenti più importanti, senza usare programmi esterni.

Non userei però Expand-Archive per fare un ripristino automatico dell’archivio perché si rischiano di perdere dati importanti e più aggiornati rispetto al contenuto dell’archivio.

Ultima nota, vedere apparire la schermata di PowerShell che esegue il backup può sicuramente dare fastidio, un metodo da usare è quello di nascondere l'esecuzione dello script.