Home > IT/TLC, PowerShell, SQL Server, Windows > Archivi compressi con PowerShell

Archivi compressi con PowerShell

Lavorando con un’edizione core di Windows Server 2012 R2 si presume di non poter sfruttare alcune delle caratteristiche messe a disposizione dell’edizione con interfaccia grafica, come per esempio la possibilità di comprimere dei files/cartelle in un archivio compresso oppure di effettuare il processo inverso, quindi l’espansione di in file compresso. PowerShell mette a disposizione due cmdlets per effettuare queste operazioni:

  • Compress-Archive: comprime files o cartelle all’interno di un archivio;
  • Expand-Archive: espande il contenuto di un archivio nel percorso assegnato.

Perché comprimere dei files con un cmdlets PowerShell? Possono esserci numerosi motivi, per esempio, potrebbe essere comodo conservare in un file compresso i risultati dell’elaborazione di un processo, mantenere traccia dei logo di un programma (che vengono regolarmente sovrascritti), allegare ad una mail informazioni relative allo stato del sistema ed altro ancora. Come riportato in figura l’uso del cmdlet di compressione è molto semplice, basta indicare ciò che vogliamo comprimere e l’archivio di destinazione, non serve altro poiché il livello di compressine predefinito è Optimal. Ho riportato, nella medesima figura i risultati ottenibili con i vari livelli di compressione di Compress-Archive ed il confronto con l’output di “cartelle compresse” di Windows Explorer; PowerShell lavora meglio del sistema!!! J

Se al posto di specificare, per il parametro -Path, un file (o più files separati da virgola) specificassimo una cartella otterremmo come risultato un file compresso con l’intero contenuto del percorso specificato. E se specificassimo più cartelle, separate da virgola???? Esattamente come per i files!!! L’archivio compresso conterrebbe esattamente i contenuti specificati!!!

Il parametro -Update di Compress-Archive ci permette di aggiornare i contenuti di un archivio compresso già esistente. Se però dimenticate di specificare questo parametro, ed eseguirete la compressione di contenuti usando l’archivio compresso esistente, perderete i contenuti precedentemente archiviati.

La decompressione dell’archivio è molto semplice, specificando l’archivio compresso come valore del parametro -Path ed indicando la cartella di destinazione come valore del parametro -DestinationPath, verrà creata (qualora non presente) la cartella di destinazione ed i nostri contenuti saranno disponibili per le nostre elaborazioni. Il parametro -Force impone la sovrascrittura della destinazione, qualora vi siano già i contenuti presenti nel nostro archivio compresso.

Un esempio pratico potrebbe essere interessante. Ammettiamo che sulla macchina sia caricata un’istanza di SQL Server 2014, voglio salvare un database di quell’istanza e poi lo voglio archiviare in un luogo diverso (e voi direte, parametrizza il cmdlet di salvataggio!!!) ma devo ridurre al massimo la dimensione del backup. Posso, molto semplicemente, preparare uno script per effettuare in pochi passaggi quanto desiderato.

$DBName = ‘YourDBName’

$SQLInstanceName = ‘YourSQLInstanceName’

$BackupDateTime = Get-Date -Format yyyyMMddHHmmss

$BackupFile = “C:\YourPath\$($DBName)_db_$($BackupDateTime).bak”

$CompressedBackupFile = “C:\YourPath\$($DBName)_db_$($BackupDateTime).zip”

Backup-SqlDatabase -ServerInstance $SQLInstanceName -Database $DBName -BackupFile $BackupFile

Compress-Archive -Path $BackupFile -DestinationPath $CompressedBackupFile

Remove-Item -Path $BackupFile

Mi vogliano scusarmi i DBA di SQL Server se non sono stato molto accurato nella preparare questo script, so che comprenderanno!!! J

In ogni caso, lo script proposto lo potrete prelevare a questo link: BackupSQL-with-compression.ps1

Il risultato che otterremo dall’esecuzione dello script è abbastanza evidente (ho evitato la rimozione del file di salvataggio solo per mostrare che l’operazione viene eseguita)

Buona compressione a tutti!!! E buono scripting!!!

Annunci
  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: