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.
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).
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.
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
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.
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
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.
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.
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.
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.
Se vogliamo che PowerShell ci mostri cosa sta facendo, durante la compressione o decompressione dei file, possiamo sempre aggiungere l’opzione -verbose
al comando.
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.