Come posso nascondere le righe "File extra" e "100%" dall'output di robocopy?


17

Ho uno script robocopy per il backup dei nostri repository Kiln che viene eseguito di notte, che assomiglia a questo:

robocopy "$liveRepoLocation" "$cloneRepoLocation" /MIR /MT /W:3 /R:100 /LOG:"$backupLogLocation\BackupKiln.txt" /NFL /NDL /NP

Nell'output, ci sono un sacco di righe che contengono "file extra", come questo:

*EXTRA File              153    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.fdt
*EXTRA File               12    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.fdx
*EXTRA File              128    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.fnm
*EXTRA File              363    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.frq
*EXTRA File               13    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.nrm

Inoltre, ci sono poi centinaia di righe in fondo che non contengono altro che "100%" s, come questo:

100%  
100%  
100%  
100%  
100%  
100%  
100%  

Oltre a rendere enormi i file di registro (ci sono molte cartelle / file nei repository Kiln), rende fastidioso scansionare i registri di tanto in tanto per vedere se tutto funzionava bene.

  1. Come posso interrompere la visualizzazione di "File extra" nel registro? (modifica: l'intera riga, non solo il testo come / NC si fermerà)
  2. Come posso impedire che queste stupide righe "100%" compaiano nel registro?

Ho provato ogni combinazione di switch che mi viene in mente (gli switch correnti sono elencati sopra nel comando), ma nessuno dei due sembra nasconderli!


Secondo ss64.com/nt/robocopy.html dovrebbe funzionare. Hai provato a cambiare l'ordine dei parametri per rispecchiare la documentazione? Sarebbe: / L / NP / LOG: file / UNILOG: file / LOG +: file / UNILOG +: file / TS / FP / NS / NC / NFL / NDL / TEE / NJH / NJS
Luiz Angelo,

Risposte:


8

Ho appena notato che ti manca un / NC lì.

/ NC: nessuna classe: non registra le classi dei file.

I file di classe sono ... Cosa significa robocopy per ottimizzato, solo ed extra?

Quindi proverei: robocopy "$ liveRepoLocation" "$ cloneRepoLocation" / MIR / MT / W: 3 / R: 100 / NP /LOG:"$backupLogLocation\BackupKiln.txt "/ NC

Modifica 1

Colpa mia. Non ho visto che hai già menzionato provare / NC

Ho provato qui. Sembra che l'opzione / MIR ignori le opzioni di registrazione. Inoltre / MT lo rovina, aggiungendo il 100%.

L'unico modo in cui ho lavorato è stato

D: \ robocopy> destinazione sorgente robocopy / MIR / W: 3 / R: 100 / NS / NC / NFL / NDL / NP /LOG:log.txt ".

* Funziona effettivamente con / MIR. Ma devi specificare / NFL e /NDL.* Non so se questo è accettabile per te.

Se provi / MT, mostrerà comunque lo sciocco al 100%

Modifica 2

So che la domanda riguardava Robocopy ma penso che dovresti provare RichCopy http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx

Ecco la riga di comando:

richcopy "D: \ robocopy \ source" "D: \ robocopy \ destination" / P / QO / QP "D: \ robocopy \ report.log" / UE / US / UD / UPC / UFC / USC / UPR / UET

Avvia la GUI di RichCopy e al termine si chiude.

Ed ecco il registro

28/11/2012 11: 35: 19,0, Copia inizio,

28/11/2012 11: 35: 20,0, Percorso sorgente: D: \ robocopy \ source,

28/11/2012 11: 35: 20,0, Percorso di destinazione: d: \ robocopy \ destination,

28/11/2012 11: 35: 20,0, conteggio dei file di origine: 12 file,

28/11/2012 11: 35: 20,0, Conteggio file copiati: 13 file,

28/11/2012 11: 35: 20,0, Conteggio file eliminati: 1.224 file,

28/11/2012 11: 35: 20,0, Tempo trascorso: 00:00:01,

28/11/2012 11: 35: 20,0, Performance media: 1.641.528 byte / sec,

28/11/2012 11: 35: 20,0, Performance media: 13 file / sec,

28/11/2012 11: 35: 20,0, Copia completata, D: \ robocopy \ source


1
/ NC rimuove semplicemente la colonna "File extra", quindi il testo non viene visualizzato. Il resto della linea è ancora incluso. Non voglio affatto la linea; Voglio solo il riassunto :(
Danny Tuppeny,

Colpa mia. Non ho visto che l'avevi già menzionato. Ho provato qui. Sembra che l'opzione / MIR ignori le opzioni di registrazione. Inoltre / MT lo rovina. L'unico modo in cui ho funzionato è stato "D: \ robocopy> destinazione sorgente robocopy / MIR / W: 3 / R: 100 / NS / NC / NFL / NDL / NP /LOG:log.txt". Se provi / MT, mostrerà comunque lo sciocco 100%.
Luiz Angelo,

1
Il 100% è la parte peggiore (molto più di loro rispetto ai file extra); non mi ero reso conto che lo stava facendo MT, quindi potrebbe rimuoverlo se non sta dando un enorme vantaggio!
Danny Tuppeny,

Contrassegnare questo come corretto in quanto è una soluzione al 100%, e non credo che ci sia una soluzione per la registrazione di "File extra" con / MIR :(
Danny Tuppeny,

Ho appena modificato la mia risposta originale. Pubblicando un nuovo commento in modo da non perderlo.
Luiz Angelo,

5

L' /XXopzione esclude dall'elenco i file extra. Perversamente, questa opzione è elencata nelle File Selectionopzioni, non Logging. È l'opposto /Xdell'opzione di registrazione, immagino.


1
Credo che / XX ti impedisca di selezionare i file extra e / X sia solo per la registrazione, ma ti consente di visualizzare ANCORA PIÙ file extra! Il / XX ha fatto il trucco per me.
Sonjz,

1
-1, perché / XX lascia il file extra sulla destinazione, invece di eliminarlo, come previsto dal processo di mirroring.
segna il

3

Penso che potrebbe funzionare:

robocopy sourceDir targetDir *.* /njh /njs /ndl /np | find /v "*EXTRA File"

Quindi reindirizza l'output a "trova" con / V per escludere le righe che contengono il testo specificato "* File extra".


Come escludere l'avanzamento% (contatore da 0 a 100%) solo dal registro (ma ancora visibile sulla console)?
Peter,

0

che ne dici di usare gli switch

 /MIR /MT /W:3 /R:100 /NFL /NDL /NP 2>&1 | findstr /v /L /C:" * EXTRA " | findstr /v /L /C:"100%%" > "log file name with or without path"

così hai

robocopy "$liveRepoLocation" "$cloneRepoLocation" /MIR /MT /W:3 /R:100 /NFL /NDL /NP 2>&1 | findstr /v /L /C:" * EXTRA " | findstr /v /L /C:"100%%" > "$backupLogLocation\BackupKiln.txt"
  • il doppio %% deve avere un% nella stringa di ricerca
  • il 2> & 1 reindirizza il flusso stderr allo stdout perché alcuni messaggi vengono scritti stderr e vogliamo catturare quelle linee come il parametro / LOG fa.
  • i 2 comandi findstr con l'opzione / v trovano tutte le righe che non contengono la stringa di ricerca
  • il "file di registro" reindirizza l'output finale al file di registro. Se si usa normalmente / LOG: + quindi usare >> "log nomefile" invece

Note: se lo stai usando in uno script PowerShell, come sembra, devi usare findstr invece di find come puoi in un file .bat o .cmd. Nota / L e / C: non sono supportati da find ma per il comando find non sono richiesti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.