Backup de dados usando a combinação FreeFileSync e 7-zip

Anamnese, por assim dizer:

Servidor Fujitsu rx300 s6, RAID6 com 6 discos de 1TB, rodando XenServer 6.2, com vários servidores em funcionamento, incluindo Ubuntu com várias pastas, 3,5 milhões de arquivos, 1,5 TB de dados, tudo isso crescendo e aumentando gradativamente.

Tarefa: configurar o backup de dados do servidor de arquivos, parcialmente diário, parcialmente semanal.
Temos uma máquina Windows para backup com RAID5 (um sistema comum com um controlador RAID integrado na placa-mãe), além de um disco separado de 2TB para cópia intermediária do estado atual dos arquivos. Poderíamos usar qualquer distribuição Linux, mas essa máquina já estava disponível com o array RAID e a licença do Windows.

Instalamos no servidor de backup FreeFileSync, configurando "espelho" de tudo do servidor de arquivos uma vez por dia à noite após as 18 horas, iniciando através do agendador.

Ponto importante: ao salvar a tarefa em lote, certifique-se de marcar "Fechar a janela da tarefa ao concluir", caso contrário, os processos se multiplicarão.

Colocamos arquivos temporários na lista de exceções: *.dwl, *.dwl2, *.tmp.

FreeFileSync utiliza a rede de forma excepcional, a cópia é realizada em vários fluxos, alcançando velocidades de até 80 MB/s ao copiar arquivos grandes, não foram detectados gargalos em arquivos pequenos.

A arquivação será feita já no servidor local de backup, em vez da que usávamos antes TheCopier com arquivamento pela rede. A propósito, TheCopier é excelente! Mas com esses volumes, simplesmente não consegue transferir tudo a tempo, apesar da interface de 1Gbps no servidor de backup e 2Gbps no servidor de arquivos (bond de duas placas de rede).

Além disso, usamos anteriormente SyncToy, mas com mais de 1,5-2 milhões de arquivos, ele parou de funcionar corretamente, simplesmente não conseguia lidar.

Para arquivar as pastas necessárias, escrevemos um script batch para 7-zip:

set now=%TIME:~0,-3%
set now=%now::=.%
set now=%now: =0%
set now=TE:~-4%.TE:~3,2%.TE:~0,2%_%now%
C:"Program Files"7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_10-04.zip E:10-04
C:"Program Files"7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_35-110.zip E:35-110
C:"Program Files"7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_asu.zip E:asu
C:"Program Files"7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_director.zip E:director
C:"Program Files"7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_gpr.zip E:gpr
C:"Program Files"7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_otiz.zip E:otiz
C:"Program Files"7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_ps.zip E:ps
C:"Program Files"7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_pto.zip E:pto
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_rza.zip E:rza
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_smeta.zip E:smeta

:: a — criação do arquivo
:: -tzip ou -t7z — tipo de arquivo (zip é 1.5 a 2 vezes mais rápido)
:: -mx=1 — grau de compressão (1 mínimo, 9 máximo valores x=[0 | 1 | 3 | 5 | 7 | 9])
:: -mmt=on — ativa multithreading onde não estiver ativado
:: -mtc=off — desativa timestamps do sistema de arquivos (quando salvo, modificado etc.)
:: -ssw — comprime também arquivos abertos para gravação
:: -xr!.Sync* — exclui arquivos temporários BtSync da compressão, mantendo os permanentes

A construção set now=% e assim por diante permite preservar o formato da data no nome do arquivo sem problemas, que surgiam quando o número do dia ou mês era menor que 10, ou seja, adiciona um zero.

Comentário -xr!.Sync* é um resquício deixado da configuração originalmente utilizada BTSync.

Até 500 GB e 700-800 mil arquivos, o BTSync funcionava razoavelmente, sincronizando em tempo real, mas com os volumes atuais consumia muita memória e recursos da CPU tanto no servidor de arquivos Ubuntu quanto no backup Windows, onde estava rodando como um serviço, além de sobrecarregar o sistema de arquivos com leituras e gravações constantes.

Embora o compactador seja 7-zip, nós compactamos no formato zip em vez do nativo 7z, pois é muito mais rápido, e a diferença na compressão com mx=1 é praticamente inexistente, comprovado por muitos experimentos.

Os arquivos são executados em sequência.

A limpeza da pasta de arquivos comprimidos também é feita através de uma tarefa agendada usando a ferramenta fpurge, mantendo arquivos não mais antigos que uma semana.
Como resultado, temos uma cópia dos arquivos do dia anterior, além de arquivos comprimidos da última semana; arquivos excluídos pelo FreeFileSync são colocados na lixeira.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster