Uma das grandes necessidades que temos no dia a dia é realizar cópias automatizadas de arquivos entre servidor. E para lidarmos com esta simples tarefa mas de grande valia vamos implementar um script (.bat) no Windows Server 2003 para realizar a cópia de alguns arquivos e compactá-los para poder enviar em outras localidades e garantirmos assim uma melhor integridade destes backups.
A ferramenta principal que iremos utilizar é o ROBOCOPY – Robust File Copy do Windows, uma ferramenta de grande poder em linha de comando que fará de forma mais especializada o nosso bom e velho Ctrl+c / Ctrl+v.
** O programa robocopy.exe é uma ferramenta que faz parte do Resource Kit da Microsoft para sistemas operacionais em plataforma windows (98, XP, 2000, 2003, etc). O Resource Kit é um conjunto de ferramentas para administradores de redes. ===— Clique aqui para baixar o Kit —===, ou diretamente do blog (clique aqui)
Executando o comando robocoby /? no prompt de comando temos uma visão do que podemos usar com o Robocopy.
Vejam as opções do comando utilizadas:
——————————————————————————-
ROBOCOPY:: Robust File Copy para Windows
——————————————————————————-
Utilização:: ROBOCOPY origem destino [ficheiro [ficheiro]…] [opções]
origem :: Directório de Origem (unidade:\caminho ou \\servidor\partilha\caminho).
destinatino :: Destination Dir (unidade:\caminho ou \\servidor\partilha\caminho).
ficheiro :: Ficheiro(s) a copiar (nomes/caracteres universais: a predefinição ‚ “*.*”).
———- Opções de cópia:
/S :: copiar Subdirectórios, excepto os que estiverem vazios.
/E :: copiar Subdirectórios, incluindo os que estiverem vazios.
/LEV:n :: copiar apenas os primeiros n níveis da árvore de directórios de origem.
/Z :: copiar ficheiros em modo reiniciável.
/B :: copiar ficheiros no modo de Cópia de Segurança.
/ZB :: utilizar o modo reiniciável; se o acesso for negado,
utilizar o modo de Cópia de Segurança.
/EFSRAW :: copiar todos os ficheiros encriptados em modo EFS RAW.
/COPY:sinalizadorescópia :: conteúdo a COPIAR para os ficheiros (predefinição: /COPY:DAT).
(sinalizadorescópia : D=Dados, A=Atributos, T=Carimbos de data/hora).
(S=Segurança=ACLs de NTFS, O=Informações do proprietário, U=Informações de auditoria).
/DCOPY:T :: COPIAR Carimbos de Data/Hora de Directórios.
/SEC :: copiar ficheiros com segurança (equivalente a /COPY:DATS).
/COPYALL :: COPIAR TODAS as informações dos ficheiros (equivalente a /COPY:DATSOU).
/NOCOPY :: NÇO COPIAR informações dos ficheiros (útil com o comando /PURGE).
/SECFIX :: CORRIGIR a segurança dos ficheiros em todos os ficheiros, mesmo os ficheiros ignorados.
/TIMFIX :: CORRIGIR datas/horas em todos os ficheiros, mesmo o ficheiros ignorados.
/PURGE :: eliminar ficheiros/directórios de destino que já não existam na origem.
/MIR :: Espelhar uma árvore de directórios (equivalente a /E em conjunto com /PURGE).
/MOV :: Mover ficheiros (eliminar da origem depois de copiar).
/MOVE :: MOVER ficheiros E directórios (eliminar da origem depois de copiar).
/A+:[RASHCNET] :: adicionar os Atributos especificados a ficheiros copiados.
/A-:[RASHCNET] :: remover os Atributos especificados dos ficheiros copiados.
/CREATE :: CRIAR árvore de directórios e ficheiros de comprimento zero apenas.
/FAT :: criar ficheiros de destino através de nomes de ficheiros FAT 8.3 apenas.
/256 :: desactivar suporte para caminhos muito longos (> 256 caracteres).
/MON:n :: MONITORIZAR origem; voltar a executar se forem apresentadas mais de n alterações.
/MOT:m :: MONITORIZAR origem; voltar a executar em m minutos, se houver alterações.
/RH:hhmm-hhmm :: Horas de Execução – alturas em que poderão ser iniciadas novas cópias.
/PF :: verificar horas de execução Ficheiro a Ficheiro (não por cada passagem).
/IPG:n :: Intervalo entre Pacotes (ms), para libertar largura de banda em linhas lentas.
/SL:: copiar hiperligações simbólicas em vez do destino.
/MT[:n] :: Criar cópias multithread com n threads (predefinição 8).
n tem de ser pelo menos 1 e não pode ser maior que 30.
Esta opção ‚ incompatível com as opções /IPG e /EFSRAW.
Redireccionar os resultados através da opção /LOG para um melhor desempenho.
—— Opções de Selecção de Ficheiros:
/A :: copiar apenas ficheiros que tenham o atributo Arquivo definido.
/M :: copiar apenas ficheiros que tenham o atributo Arquivo e repor o atributo.
/IA:[RASHCNETO] :: Incluir apenas ficheiros que tenham qualquer um dos Atributos especificados definido.
/XA:[RASHCNETO] :: Excluir ficheiros que tenham qualquer um dos Atributos especificados definido.
/XF file [ficheiro]… :: Excluir Ficheiros que coincidam com os nomes/caminhos/caracteres universais especificados.
/XD dirs [directórios]… :: Excluir Directórios que coincidam com os nomes/caminhos especificados.
/XC :: excluir ficheiros alterados.
/XN :: excluir ficheiros mais recentes.
/XO :: excluir ficheiros mais antigos.
/XX :: Excluir ficheiros e directórios suplementares.
/XL :: Excluir ficheiros e directórios isolados.
/IS :: incluir os mesmos ficheiros.
/IT :: incluir ficheiros optimizados.
/MAX:n :: Tamanho máximo de ficheiro – excluir ficheiros com um tamanho superior a n bytes.
/MIN:n :: Tamanho mínimo de ficheiro – excluir ficheiros com um tamanho inferior a n bytes.
/MAXAGE:n :: ANTIGUIDADE máxima de ficheiro – excluir ficheiros com mais de n dias/data.
/MINAGE:n :: ANTIGUIDADE mínima de ficheiro – excluir ficheiros com menos de n dias/data.
/MAXLAD:n :: Data Máxima do último Acesso – excluir ficheiros não utilizados desde n.
/MINLAD:n :: Data Mínima do último Acesso – excluir ficheiros utilizados desde n.
(Se n < 1900 então n = n dias, caso contrário n = data em formato AAAAMMDD).
/XJ :: excluir pontos de Junção (normalmente incluído por predefinição).
/FFT :: assumir Tempos de Ficheiros FAT (granulação de 2 segundos).
/DST :: compensar diferenças de tempo DST de uma hora.
/XJD :: excluir pontos de Junção para Directórios.
/XJF :: excluir pontos de Junção para Ficheiros.
——–: Opções de Repetição:
/R:n :: número de Tentativas em cópias falhadas: a predefinição ‚ de 1 milhão.
/W:n :: Tempo de espera entre tentativas: a predefinição ‚ de 30 segundos.
/REG :: Guardar /R:n e /W:n no Registo como predefinições.
/TBD :: espera para nomes de partilha A DEFINIR (erro de repetição 67).
——– Opções de Registo:
/L :: Listar apenas – não copiar, colocar carimbo de data/hora ou eliminar quaisquer ficheiros.
/X :: comunicar todos os ficheiros suplementares, não apenas os seleccionados.
/V :: produzir saída Verbosa, com apresentação dos ficheiros ignorados.
/TS :: incluir Carimbos de Data/Hora de ficheiros de origem na saída.
/FP :: incluir Nome de Caminho Completo na saída.
/BYTES :: imprimir tamanhos como bytes.
/NS :: Sem Tamanho – não registar tamanhos de ficheiros.
/NC :: Sem Classe – não registar classes de ficheiros.
/NFL :: Sem Lista de Ficheiros – não registar nomes de ficheiros.
/NDL :: Sem Lista de Directórios – não registar nomes de directórios.
/NP :: Sem Progresso – não apresentar percentagem copiada.
/ETA :: mostrar Hora Estimada de Recepção de ficheiros copiados.
/LOG:ficheiro :: enviar estado para ficheiro de REGISTO (substituir registo existente).
/LOG+:ficheiro :: enviar estado para ficheiro de REGISTO (acrescentar ao registo existente).
/UNILOG:ficheiro :: enviar estado para ficheiro de REGISTO como UNICODE (substituir registo existente).
/UNILOG+:ficheiro :: enviar estado para ficheiro de REGISTO como UNICODE (acrescentar ao registo existente).
/TEE :: enviar para a janela da consola e para o ficheiro de registo.
/NJH :: sem cabeçalho de tarefa.
/NJS :: sem resumo de tarefa.
/UNICODE :: emitir estado como UNICODE.
——– Opções de Tarefa:
/JOB:nometarefa :: tirar parâmetros do ficheiro da TAREFA especificado.
/SAVE:nometarefa :: GUARDAR parâmetros no ficheiro de tarefa especificado
/QUIT :: SAIR depois de processar a linha de comandos (para ver parâmetros).
/NOSD :: NÃO foi especificado um Directório de Origem.
/NODD :: NÃO foi especificado um Directório de Destino.
/IF :: Incluir os seguintes Ficheiros.
Basicamente a sintaxe do comando é a seguinte:
Robocopy origem destino [opções do comando]
Um exemplo simples que iremos criar é a realização de cópia de um arquivo que encontra-se no diretório de exemplo: C:\SIMA\Dados onde temos um arquivo FDB e após esta cópia iremos também executar uma cópia de um arquivo security do Firebird, ambos registrando um log.
Parte 1: Copia de tudo que esta dentro do diretório C:\SIMA\Dados e registra o log BackupBD.log
robocopy C:\SIMA\Dados C:\BACKUP /E /ZB /COPYALL /R:0 /W:0 /V /NP /ETA /LOG:C:\BACKUP\BackupBD.log
Parte 2: Cópia de todo aqrtuivo .fdb dentro do C:\SIMA\Firebird\Firebird-1-5 e registra o log BackupFIR.log
robocopy C:\SIMA\Firebird\Firebird-1-5 C:\BACKUP /a /zb /IF *.fdb /ZB /COPYALL /R:0 /W:0 /V /NP /ETA /LOG:C:\BACKUP\BackupFIR.log
Parte 3: Vamos compactar todos os arquivos em um único arquivo em .rar (Entenda melhor esta função no artigo: Automatizando compactação por prompt no Windows Server )
“C:\Arquivos de programas\WinRAR\Rar.exe” a -agDD-MM-YYYY C:\BACKUP\Backup_Exemplo_ C:\BACKUP
Pronto realizado os backups iremos enviar o arquivo para outro destino que pode ser Linux usando o passo a passo que fiz no artigo: SCP Linux – Cópia Segura de Arquivos no Windows para Linux
Bom espero ter ajudado
gde abç
Obrigado pela contribuição. Funcionou perfeitamente!
Boa tarde Lenadro, tudo bem?
Que bom que lhe ajudei com este post e obrigado pela visita no blog.
abçs