Vai al menù, saltando i contenuti (access key "m")
Windows.
Mirroring di una directory
Spesso si vuole fare un backup oppure una copia su un server di una directory. Un esempio è l'uso di wget che ho fatto per il backup del mio sito. Senza installare alcuna applicazione, su Windows esiste l'ottimo comando robocopy. Ecco l'uso minimale:
ROBOCOPY origine destinazione /MIR
Questo comando copierà il contenuto della cartella origine all'interno della cartella destinazione. L'opzione /MIR elimina i file nella cartella di destinazione che non siano presenti anche nella cartella di origine.
Il comando robocopy è ricchissimo di opzioni. Una di queste, fondamentale, è /FFT, che significa FAT File Time. Vi sarà molto utile se andrete a copiare una directory residente su un filesystem NTFS su una directory residente su FAT/EXT2/EXT3. Infatti la precisione nella data che riporta l'ultima modifica in questi filesystem è di 1 o 2 secondi. NTFS invece ha una precisione molto maggiore (granularità minore). Di conseguenza file identici verranno copiati nuovamente solo perché le date varieranno di pochi decimi di secondo. Per ovviare a questo problema è stata creata l'opzione /FFT che fa considerare uguali due file se, a parte tutto il resto, hanno date uguali entro due secondi di errore.
ROBOCOPY origine destinazione /MIR /FFT
Un altro strumento molto utile è il programmino Freeware chiamato Mirror.
Ecco un piccolo script che uso con robocopy.
@echo off echo Choose an option number: echo 1. Sync Cu2O db with HOMY echo 2. Sync Cu2O db with CLAUDIAM echo. :choice setlocal SET /P choice="Digit a number [1-2] and press Enter. Just Enter to exit: " if not defined choice (goto :end) if "%choice%" EQU "1" goto :choice1 if "%choice%" EQU "2" goto :choice2 endlocal echo "Wrong choice!" goto :choice :choice1 robocopy E:\Biblioteca\Fisica\Semiconduttori\Cu2O \\HOMY\public\francesco_NON_TOCCARE\letteratura_Cu2O /MIR /FFT goto :end :choice2 robocopy E:\Biblioteca\Fisica\Semiconduttori\Cu2O \\CLAUDIAM\Cu2O\Letteratura /MIR /FFT goto :end :end set choice = "" goto :eof
Guida robocopy
Sintassi :: ROBOCOPY origine destinazione [file [file]...] [opzioni] origine :: directory di origine (unità:\percorso o \\server\condivisione\percorso). destinazione :: directory di destinazione (unità:\percorso o \\server\condivisione\percorso). file :: file da copiare (nomi/caratteri jolly: l'impostazione predefinita è "*.*"). :: :: Opzioni di copia: :: /S :: copia le sottodirectory non vuote. /E :: copia le sottodirectory, incluse quelle vuote. /LEV:n :: copia solo i primi n livelli dell'albero di directory di origine. Approfondimento: /S non è di default! Quindi in pratica robocopy di default copia solo i file, non scende nelle cartelle. /E è compreso nell'opzione /MIR /Z :: copia i file in modalità di riavvio. /B :: copia i file in modalità di backup. /ZB :: usa la modalità di riavvio; in caso di accesso negato usa la modalità di backup. /EFSRAW :: copia tutti i file crittografati in modalità RAW EFS. Approfondimento: /Z, /B, ... /COPY:flagcopia :: indica gli elementi dei file da copiare (impostazione predefinita /COPY:DAT). (flag copia : D=dati, A=attributi, T=timestamp). (S=protezione=ACL NTFS, O=informazioni proprietario, U=informazioni controllo). /DCOPY:T :: copia i timestamp delle directory. Approfondimento: /DCOPY:T di default non c'è. Cioè quando robocopy copia delle directory, queste avranno la data di modifica pari a quella attuale. /SEC :: copia i file con protezione (equivale a /COPY:DATS). /COPYALL :: copia tutte le informazioni dei file (equivale a /COPY:DATSOU). /NOCOPY :: non copia alcuna informazione dei file (utile con /PURGE). /SECFIX :: aggiorna la protezione su tutti i file, anche quelli ignorati. /TIMFIX :: corregge l'ora di tutti i file, anche quelli ignorati. /PURGE :: elimina i file e le directory di destinazione non più esistenti nell'origine. /MIR :: esegue il mirroring di un albero di directory (equivale a /E più /PURGE). /MOV :: sposta i file (li elimina dall'origine dopo la copia). /MOVE :: sposta i file e le directory (li elimina dall'origine dopo la copia). /A+:[RASHCNET] :: aggiunge gli attributi specificati ai file copiati. /A-:[RASHCNET] :: rimuove gli attributi specificati dai file copiati. Approfondimento: RASHCNETO significa R – Read only A – Archive S – System H – Hidden C – Compressed N – Not content indexed E – Encrypted T – Temporary O - Offline /CREATE :: crea solo alberi directory e file vuoti. /FAT :: crea file di destinazione usando solo nomi FAT 8.3. /256 :: disattiva il supporto dei percorsi più lunghi di 256 caratteri. /MON:n :: monitorizza l'origine; eseguito di nuovo se rileva più di n modifiche. /MOT:m :: monitorizza l'origine; eseguito di nuovo dopo m minuti in caso di modifiche. /RH:hhmm-hhmm :: ore di esecuzione i cui è possibile avviare nuove copie. /PF :: controlla le ore di esecuzione in base al file (non al passaggio). /IPG:n :: scarto tra pacchetti (ms), per liberare larghezza di banda su linee lente. /SL:: copia i collegamenti simbolici rispetto alla destinazione. :: :: Opzioni di selezione dei file: :: /A :: copia solo i file con l'attributo di archivio. /M :: copia solo i file con l'attributo di archivio e lo reimposta. /IA:[RASHCNETO] :: include solo i file con gli attributi specificato. /XA:[RASHCNETO] :: esclude i file con gli attributi specificati. /XF file [file]... :: esclude i file corrispondenti ai nomi, ai percorsi o ai caratteri jolly specificati. /XD dir [dir]... :: esclude le directory corrispondenti ai nomi o ai percorsi specificati. /XC :: esclude i file con stessa data ma dimensione differente. /XN :: esclude i file più recenti. /XO :: esclude i file più vecchi. /XX :: esclude i file e le directory supplementari. /XL :: esclude i file e le directory isolate. /IS :: include i file uguali. /IT :: include i file variati. Approfondimento: robocopy di default sovrascrive sempre un file se è diverso in data o contenuto rispetto a quello di origine. XC non copia i file che nell'origine sono stati modificati rispetto a quelli di destinazione XN non copia i file la cui data nell'origine è più recente di quella di destinazione XO non copia i file la cui data nell'origine è più vecchia di quella di destinazione XX non prende in considerazione i file e le directory presenti nella destinazione ma non nell'origine. Questo per esempio inibisce il /PURGE (o il /MIR) XL non prende in considerazione i file e le directory presenti nell'origine ma non nella destinazione. In pratica serve ad aggiornare solo i file già presenti nella destinazione IS copia un file anche se è identico tra sorgente e destinazione IT copia i file identici per timestamp, dimensione e nome ma non con gli stessi attributi (normalmente invece se gli attributi sono l'unica differenza allora il file non è copiato) /MAX:n :: dimensione massima dei file, esclude i file con dimensione superiore a n byte. /MIN:n :: dimensione minima dei file, esclude i file con dimensione inferiore a n byte. /MAXAGE:n :: data file massima, esclude i file anteriori alla data o ai giorni indicati da n. /MINAGE:n :: data file minima, esclude i file posteriori alla data o ai giorni indicati da n. /MAXLAD:n :: data massima di ultimo accesso, esclude i file non utilizzati dalla data indicata da n. /MINLAD:n :: data minima di ultimo accesso, esclude i file utilizzati a partire dalla data indicata da n. (Se n < 1900 allora n = n giorni, altrimenti n = data in formato YYYYMMDD). /XJ :: esclude i punti di giunzione (inclusi per impostazione predefinita). /FFT :: imposta la modalità oraria dei file FAT (granularità di 2 secondi). /DST :: compensa le differenze dovute all'ora legale. /XJD :: esclude i punti di giunzione per le directory. /XJF :: esclude i punti di giunzione per i file. :: :: Opzioni per i nuovi tentativi: :: /R:n :: numero di nuovi tentativi per le copie non riuscite (impostazione predefinita 1 milione). /W:n :: tempo di attesa tra tentativi (impostazione predefinita 30 secondi). /REG :: salva /R:n e /W:n nel Registro di sistema come impostazioni predefinite. /TBD :: attende la definizione dei nomi di condivisione (errore 67). :: :: Opzioni di registrazione: :: /L :: elenca i file senza copiarli, eliminarli o aggiungere il timestamp. /X :: indica tutti i file supplementari, non solo quelli selezionati. /V :: genera un output dettagliato, inclusi i file ignorati. /TS :: include nell'output i timestamp dei file di origine. /FP :: include nell'output il percorso completo dei file. /BYTES :: stampa le dimensioni in byte. /NS :: non registra le dimensioni dei file. /NC :: non registra le classi dei file. /NFL :: non registra i nomi dei file. /NDL :: non registra i nomi delle directory. /NP :: non visualizza la percentuale dello stato di copia. /ETA :: mostra il tempo stimato di completamento dei file copiati. /LOG:file :: invia l'output dello stato nel file specificato (sovrascrive il file esistente). /LOG+:file :: invia l'output dello stato nel file specificato (lo aggiunge se il file esiste). /UNILOG:file :: invia l'output dello stato nel file specificato come UNICODE (sovrascrive il file esistente). /UNILOG+:file :: invia l'output dello stato nel file specificato come UNICODE (lo aggiunge se il file esiste). /TEE :: invia l'output alla finestra della console e nel file di registro. /NJH :: non visualizza l'intestazione del processo. /NJS :: non visualizza il riepilogo del processo. /UNICODE :: genera l'output dello stato come UNICODE. :: :: Opzioni di processo: :: /JOB:nomeprocesso :: usa i parametri del file di processo denominato. /SAVE:nomeprocesso :: salva il parametri nel file di processo denominato. /QUIT :: esce dopo l'elaborazione della riga di comando per visualizzare i parametri. /NOSD :: non specifica alcuna directory di origine. /NODD :: non specifica alcuna directory di destinazione. /IF :: include i file specificati.
Codici di errore
errorlevel 16 : ***FATAL ERROR*** errorlevel 15 : OKCOPY + FAIL + MISMATCHES + XTRA errorlevel 14 : FAIL + MISMATCHES + XTRA errorlevel 13 : OKCOPY + FAIL + MISMATCHES errorlevel 12 : FAIL + MISMATCHES errorlevel 11 : OKCOPY + FAIL + XTRA errorlevel 10 : FAIL + XTRA errorlevel 9 : OKCOPY + FAIL errorlevel 8 : FAIL errorlevel 7 : OKCOPY + MISMATCHES + XTRA errorlevel 6 : MISMATCHES + XTRA errorlevel 5 : OKCOPY + MISMATCHES errorlevel 4 : MISMATCHES errorlevel 3 : OKCOPY + XTRA errorlevel 2 : XTRA errorlevel 1 : OKCOPY errorlevel 0 : No Change