giovedì 12 giugno 2014

HoboCopy, copiare i file in uso o bloccati da Windows o da altre applicazioni

Avete mai provato a copiare un file in uso/bloccato da Windows o da un'altra applicazione? Allora potrebbe esservi apparso un messaggio simile a "Il processo non può accedere al file perché è bloccato da un altro processo". Per esempio non è possibile copiare un file .pst mentre Outlook è aperto o l'immagine ISO del disco di ripristino di Windows 7 (creata nella cartella dei file temporanei), neanche ricorrendo a tool "sbloccatori" come Unlocker.

In questi casi dobbiamo usare HoboCopy (https://candera.github.io/hobocopy/), un'utility (gratuita) a riga di comando che può copiare i file bloccati e che funziona su Windows XP/2003-Server/Vista/7/8.x sia a 32 che a 64 bit. Il nome di questo tool deriva da quello di Robocopy, una potentissima utility sviluppata da Microsoft. HoboCopy ha solo una parte delle funzionalità di Robocopy ma può fare la copia dei file bloccati dal sistema o da un altro processo, che Robocopy non è in grado di fare.

Prerequisiti all'uso di Hobocopy

Per copiare i file bloccati, HoboCopy scatta uno snapshot (istantanea) del file; in pratica non copia il file bloccato, ma sfutta la tecnologia VSS (Volume Shadow Service, introdotta con Windows XP) per farne un'immagine e ripristinarla in una cartella diversa da quella originale. Questa tecnica è usata anche da altre utility di backup e richiede che non siano disabilitati i seguenti servizi di sistema:
  • Volume Shadow Copy che, nelle versioni in Italiano di Windows, si chiama Copia replicata del volume (in Windows XP) oppure Copia shadow del volume (in Windows Vista/7/8.x).
  • Microsoft Software Shadow Copy Provider che, nelle versioni in Italiano di Windows, si chiama MS Software Shadow Copy Provider (in Windows XP) oppure Provider di copie shadow software Microsoft (in Windows Vista/7/8.x).
Questi servizi sono in stato "Manuale" per impostazione predefinita, per cui se sono stati disabilitati è necessario reimpostarli.

Installazione di HoboCopy

Nel seguito supponiamo di lavorare nella partizione E, dentro cui creare le cartelle:
  • \hobocopy = cartella dentro cui estraiamo l'eseguibile di HoboCopy; ci riferiremo ad essa con il percorso E:\hobocopy
  • \copie = cartella dentro cui faremo la copia dei file bloccati; ci riferiremo ad essa con il percorso E:\copie

Scaricare innanzitutto la versione di Hobocopy per il proprio sistema, disponibile nelle seguenti varianti:

  • versione 1.0 (o 1.0.0.0) (18 Gennaio 2011), sia a 32 che a 64 bit;
  • versione "after 1.0" (5 Maggio 2011), sia a 32 che a 64 bit; è etichettata come "unstable" (instabile) ma funziona benissimo ed è la versione con cui sono state effettuate le prove per questo articolo;
  • la versione per Windows XP a 32 bit è disponibile come download separato da quella per i sistemi a 32 bit successivi (Windows 2003, Vista, 7);
  • sebbene non sia esplicitamente dichiarato, la versione per Windows 7 funziona anche su Windows 8.x.
A questo punto basta estrarre il contenuto del file .zip nella cartella E:\hobocopy.

NOTA
Se HoboCopy non funziona, accertatevi che sia installato il Visual C++ runtime redistributable:
  • vcredist-2008_<x86/x64>.exe per la versione 1.0 di Hobocopy;
  • vcredist-2010_<x86/x64>.exe per la versione "after 1.0 unstable";
  • si ricorda che la versione x86 è per sistemi a 32 bit, la versione x64 per quelli a 64 bit;
  • probabilmente per il vostro sistema è già stato installato (poiché è richiesto da moltissimi software) ma, in caso contrario, è reperibile nella stessa pagina di download di Hobocopy.

La sintassi completa…

…di HoboCopy è disponibile alla seguente pagina: https://github.com/candera/hobocopy

Copiare un singolo file (eventualmente protetto o in uso da un altro processo)

Copiare un singolo file è possibile con il seguente comando:
hobocopy <directory-sorgente> <directory-destinazione> <file-da-copiare>

Devono essere forniti i percorsi completi delle directory e:
  • su Windows XP occorre accedere come amministratori di sistema;
  • su Windows Vista/7/8.x bisogna aprire un prompt dei comandi come amministratore di sistema (si ottiene facendo click su START/Tutti i programmi/Accessori, selezionare col tasto destro del mouse Prompt dei comandi, scegliere Esegui come amministratore).
Supponiamo di voler copiare nella cartella E:\copie il file protetto Outlook.pst situato nella cartella di origine C:\Utenti\pippo\email.

Dal prompt dei comandi ci posizioniamo nella cartella E:\hobocopy (dove abbiamo decompresso l'utility); ciò si ottiene con i comandi
e:
cd hobocopy


Per eseguire la copia digitare
hobocopy C:\Utenti\pippo\email\ e:\copie\ Outlook.pst

Verrà creato il file E:\copie\Outlook.pst che potrà essere rinominato a piacere.
Si ricorda che i nomi delle directory e dei file in Windows non sono sensibili al contesto, per cui possono essere inseriti anche tutti con lettere minuscole. Prestare attenzione al fatto che i parametri sono separati da uno spazio:
hobocopy<SPAZIO>C:\Utenti\pippo\email\<SPAZIO>e:\copie\<SPAZIO>Outlook.pst

Un uso frequente della copia di un solo file è quando si vuole copiare l'immagine ISO del CD di ripristino di Windows 7/Vista-SP1, che viene creata dal tool recdisc nella cartella dei file temporanei: è impossibile usare il copia-incolla perché la ISO è bloccata. In tal caso il comando da dare è:
hobocopy %temp% e:\copie\ *.iso

NOTA
HoboCopy non può copiare i file ignorati dai servizi VSS, per esempio quelli con estensione .ost (sono i file di dati off-line di Outlook, che VSS ignora perché possono essere rigenerati). Maggiori informazioni sui file .pst e .ost sono reperibili qui:
https://office.microsoft.com/it-it/outlook-help/introduzione-ai-file-di-dati-di-outlook-con-estensione-pst-e-ost-HA010354876.aspx

Backup di una directory

Aggiungendo alcuni parametri si può fare il backup di una intera directory (cartella):
hobocopy /full /skipdenied /y /r <direcotry-origine> <directory-destinazione>
dove:
  • /full = copia tutti i file
  • /skipdenied = salta la copia dei file per cui HoboCopy non ha i permessi di accesso (se siete sicuri di avere tutti i permessi di accesso questo parametro può essere omesso)
  • /y = copia tutto come se l'utente rispondesse "yes" ("si") a tutte le richieste di HoboCopy
  • /r = copia ricorsivamente tutte le subdirectory, incluse quelle vuote
Per esempio, in Windows Vista/7/8.x, per fare il backup dell'intera directory dell'utente pippo nella cartella \copie, dare il comando
hobocopy /full /skipdenied /y /r C:\Utenti\pippo\ e:\copie\

Backup incrementale

Con il backup incrementale si copiano solo i file che sono cambiati rispetto all'ultimo backup:
hobocopy /incremental /statefile=<nome-file-di-stato> /y /r <direcotry-origine> <directory-destinazione>
dove:
  • /incremental : copia solo i file cambiati rispetto all'ultima copia completa (richiede la presenza di un file di informazioni da specificare con il parametro /statefile)
  • /statefile=<nome-file-di-stato> : specifica il file si memorizzano le informazioni di data e ora dell'ultima copia completa.
La prima volta che si vuole fare un backup incrementale bisogna specificare il parametro /full al posto di /incremental, perché la prima volta la copia deve essere completa e si deve creare il file di informazioni. Per esempio, in Windows Vista/7/8.x, per fare il backup dell'intera directory dell'utente pippo nella cartella \copie e creare il file di informazioni infobackup.dat in E:\, dare il comando
hobocopy /full /statefile=E:\infobackup.dat /y /r C:\Utenti\pippo\ e:\copie\
A questo punto si ha una copia completa ed un file di informazioni; l'aggiornamento incrementale si farà con il comando
hobocopy /incremental /statefile=E:\infobackup.dat /y /r C:\Utenti\pippo\ e:\copie\
che provvede anche ad aggiornare anche il file di informazioni.

POTREBBE INTERESSARTI ANCHE…