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).
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.
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/hobocopyCopiare 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).
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
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.
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.