Qual é a maneira mais simples e rápida de transferir arquivos grandes através de uma rede Windows?

14

Eu tenho uma máquina Windows Server 2000 executando o MS SQL Server que armazena mais de 20 GB de dados. O backup do banco de dados é feito diariamente para o segundo disco rígido. Quero transferir esses arquivos de backup para outro computador para criar outro servidor de teste e praticar a recuperação. (o backup nunca foi restaurado por quase 5 anos. Não conte a meu chefe sobre isso!)

Estou com problemas para transferir esse arquivo enorme pela rede. Eu tentei cópia de rede simples, download apache e ftp. Qualquer método que eu tentei acaba falhando quando a quantidade de dados transferidos chega a 2 GB. A última vez que transferi o arquivo com sucesso, foi através de um disco rígido externo conectado a USB. Mas quero executar essa tarefa rotineiramente e de preferência automaticamente.

Gostaria de saber qual é a abordagem mais pragmática para essa situação?

Saquê
fonte
Qual sistema de arquivos você está usando no disco para o qual está transferindo?
27411 Marko Carter
NTFS. Isso importa?
Sake
É importante porque o sistema de arquivos de destino poderia ter um limite de tamanho de arquivo de 2 GB que poderia ter causado seu erro sempre em 2 GB. Mas é NTFS, então provavelmente não é isso :) #
2929 Lucas
Sim, aposto que o dinheiro não é realmente NTFS.
Brent Ozar

Respostas:

16

Uma falha previsível em 2Gb parece que o sistema de arquivos de destino é o culpado ... Ambos estão no NTFS? Você está navegando através de qualquer compactação (zip costumava falhar nos limites de 2 gb) ((o apache está fazendo compactação))

Copiei muitos arquivos acima de 20Gb usando robocopy (como outros mencionaram), mas evitaria usar a opção / MIR até ter certeza de que a cópia está fazendo o que deseja - pois ela excluirá os arquivos e os copiará.

O SMB sofre de um pacote de cada vez e, portanto, geralmente é a maneira mais lenta de copiar arquivos - você tem a opção de copiar usando push ou pull. Pessoalmente, prefiro o método push (a cópia é iniciada pela fonte).

Iain
fonte
3
Concordo plenamente. 2 gb é um gargalo comum para sistemas de arquivos FAT. Eu realmente verificaria atentamente para garantir que você não está tentando copiar para um sistema de arquivos FAT.
Brent Ozar
eu pensei que era de 4 gb?
Journeyman Geek
10

A ferramenta MS Exchange eseutil é um excelente utilitário para copiar arquivos grandes rapidamente em uma rede:

eseutil / y arquivo_de origem / arquivo_dest.

this.matthew
fonte
+1 Nunca pensei em usar isso para outra coisa senão Exchange! Vou ter que dar um giro nisso.
squillman
3
Em technet.microsoft.com/en-us/library/aa998673(EXCHG.80).aspx "O modo de cópia de arquivo Y / Utilitários de Banco de Dados do Exchange Server (Eseutil.exe) / Y é otimizado para copiar arquivos muito grandes com eficiência. Você pode usar o / Y alterna para copiar um arquivo de banco de dados ou arquivo de log. No entanto, o modo não é adequado como um utilitário de cópia de uso geral "
Goyuix
+1, este é provavelmente o efeito colateral mais impressionante de um utilitário de manutenção de banco de dados já ouvido!
Massimo
6

Eu recomendo usar o utilitário gratuito RichCopy . É multithread e pode pausar e retomar as operações de cópia de arquivo. Eu tive muita sorte em usá-lo para transferir arquivos entre servidores.

Minhas três principais dicas para usar o RichCopy

  1. Se você estiver copiando um ou alguns arquivos grandes, defina o atributo 'File Copy' para mais de '1'. Ele consome recursos, mas copia arquivos grandes mais rapidamente

  2. Se você estiver copiando muitos arquivos, defina os atributos 'Número do segmento' como 10-10-1. Isso copiará vários arquivos mais rapidamente

  3. Se você estiver copiando através de uma conexão desonesta. Você pode executar novamente o download e ele encontrará os arquivos que não conseguiu obter pela primeira vez.

http://blogs.technet.com/markdea/archive/2009/03/24/richcopy-is-it-the-new-sliced-bread.aspx

notandy
fonte
5

No que diz respeito aos utilitários de cópia de arquivo, o TeraCopy é um bom baseado em GUI (não linha de comando) que pode enfileirar muitos arquivos, suporta pausas e retoma, pode alterar dinamicamente o tamanho do buffer para otimizar a velocidade e, opcionalmente, substituir o padrão do Windows Explorer copiar / mover com seus próprios.

Lucas
fonte
3

A robocópia com a opção / MIR é muito útil para backups rápidos e sujos entre máquinas. Você pode encontrar a robocopy no Windows Server 200X Resouce Kit

O MIR espelha o conteúdo de um diretório para outro servidor. Ele copiará apenas os arquivos que foram alterados.

Cephas
fonte
2
/ Z também é uma opção interessante. Permite retomar cópias com falha. Isso salvou minha vida em redes lentas #
Nick Kavadias
2

A solução mais pragmática para repetições aleatórias de grandes arquivos de backup do SQL Server é usar um produto de compactação de backup de terceiros ou a compactação de backup interna do SQL Server 2008 Enterprise Edition.

Existem vários por aí de diferentes fornecedores. Trabalho na Quest Software, fabricante do LiteSpeed, mas não estou aqui para vender nada. Você deseja verificar todos os produtos disponíveis e decidir o que é melhor para suas necessidades. Aqui está uma postagem recente do blog falando especificamente sobre o LiteSpeed, mas os mesmos conceitos também se aplicam a outros produtos:

http://blogs.lessthandot.com/index.php/DataMgmt/DBAdmin/title-8

Brent Ozar
fonte
1

Você está copiando o arquivo através de uma LAN ou através de uma conexão WAN como ADSL? Presumo que seja uma WAN porque 20 GB não é um arquivo grande para copiar em uma LAN. Eu copio muitos desses arquivos todos os dias.

Se for uma conexão WAN, o modo como faço é usar a versão Cygwin do rsync.

JR

John Rennie
fonte
1

Eu tinha transferências de rede com falha em torno da marca de 2 GB - acabou por ser uma placa de rede com defeito.

Lazlow
fonte
3
NIC com defeito sempre falhava em torno de 2 GB? estranho!
2927 Lucas
talvez essa placa de rede tivesse acelerado o hardware do TCP com um bug?
Qbeuek 29/05/09
Não tenho 100% de certeza do que havia de errado com a própria placa de rede, mas foi um caso sem marca do eBay - assim que a substituí, as transferências de rede melhoraram bastante sem queda na conectividade.
Lazlow
1

É um pouco tarde, mas eu recomendaria uma opção de aplicativo de backup e restauração de terceiros. Usamos o Red Gate SQL Backup ( www.red-gate.com ), ele possui opções de compactação e localização alternativa na GUI. Recebo compressões economizando em média 80% - para que você transfira apenas 20% do tamanho real do banco de dados. Ele também suporta criptografia para que possa ser usado em uma WAN sem preocupações de interceptação.

É totalmente agendável para que possa ser executado automaticamente em um ciclo de sua escolha.

A GUI também permite configurar e administrar o envio de logs.

Versão de teste gratuita disponível acima.

Fatherjack
fonte
0

Não tenho experiência com um arquivo tão grande, mas você poderia usar robocopy ou mesmo xcopy com a opção / Z que afirma ser reinicializável. Parece que isso se destina a cópias grandes de arquivos em que a rede não é confiável.

Knox
fonte
0

Eu usei robocopy para mais de 1gb e não tive problemas. ss64.com tem uma boa explicação dos switches. Não consigo postar o link :-(

JoeOD
fonte
0

Resposta do mal ..

Use o Netcat . Um tutorial orientado a unix para transferência de arquivos pode ser encontrado aqui . Você pode acelerar ainda mais as coisas:

  1. Comprima no lado do remetente e descompacte no lado do destino. (chuck windows equivalente a gzip no meio das linhas de comando.)
  2. Escolha enviar dados via udp em vez de por tcp (ei cara, quem se importa com a integridade dos dados ?? !!)

Brincadeiras à parte, o netcat é provavelmente a maneira mais rápida de transferir arquivos grandes em uma LAN. Como nenhuma soma de verificação é feita, convém fazer uma soma MD5 do arquivo antes de enviá-lo e compará-la com a soma MD5 do arquivo recebido.

Eu usei muito o netcat dessa maneira, nunca vi isso falhar, nunca vi ele falhar ao máximo na rede ..

Mateus
fonte
Talvez o Netcat seja fácil e rápido de usar, mas eu não obtive nenhuma velocidade alta com ele. IIRC, mal consegue atingir 2-3 MB / s. Quando se trata de velocidade, é uma merda demais.
Cristian Ciupitu
Sinto alguns testes de desempenho chegando ... Vou ver se consigo tempo para comparar nfs, cifs, ftp e nc na minha rede doméstica local.
3030 Matthew
Se o netcat estiver fornecendo apenas 2-3 MB / s, seu sistema está danificado. O ftp e o netcat devem ter desempenho idêntico. NFS e CIFs também costumam ser iguais.
23710 Justin Justin
0

Pode valer a pena dividir o arquivo em pedaços menores como uma solução de curto prazo até que você possa identificar o problema. Tivemos problemas semelhantes a isso no passado, e o ftp sempre funcionou para nós

beakersoft
fonte
0

Se estes são arquivos .bak do SQL que você está copiando, sugiro que siga um destes procedimentos para reduzir os arquivos antes de copiar:

  • Reduza o banco de dados e trunque o log antes de executar o backup. OU
  • Compacte o arquivo .bak antes de copiar. Os arquivos .bak do SQL são compactados se você não estiver usando o espaço totalmente alocado nos arquivos de dados e log.

Pode eliminar a necessidade de um método alternativo para copiar arquivos grandes.

squillman
fonte
Eu tentei isso. Infelizmente não ajuda muito.
Sake
Só por curiosidade, então ... Você tem seu crescimento automático definido para um valor de byte rígido ou%? Ou você ainda o configurou para crescimento automático?
squillman
0

Eu não acho que encontrar algo para transferir mais rapidamente seja o seu problema, verifique novamente para garantir que o sistema de arquivos de destino NÃO seja FAT, como já foi dito. Além disso, verifique se as NICs de ambos os lados possuem drivers atualizados e não estão agindo de maneira inadequada.

Com isso dito, você está movendo muitos arquivos pequenos ou apenas alguns grandes? Vi problemas no controlador RAID ao tentar mover milhões de arquivos minúsculos.

Não acho que você tenha problemas para automatizar isso depois de descobrir o que está causando a falha. Pode ser útil listar mais detalhes sobre o seu hardware e quaisquer erros relevantes que você possa ver no visualizador de eventos.

jhayes
fonte
0

Você tentou usar uma conexão eSATA com um disco rígido externo? As conexões são muito rápidas (3 gigabit!) E devem poder transferir esse arquivo rapidamente!

Qual a velocidade da sua placa de rede no servidor, 10/100 ou 10/100/1000? Como é a largura de banda e o switch da rede do servidor quando você está copiando o arquivo? Como é a largura de banda da rede do local de destino (servidor?) Ao copiar? Você já tentou juntar duas placas de rede? Os drivers da placa de rede estão atualizados? O BIOS está atualizado?

Há muitas coisas que podem ser o problema das transferências de arquivos. Garantir que os drivers de hardware e o BIOS estejam atualizados pode realmente fazer a diferença.

-JFV

JFV
fonte
0

A maneira mais simples e rápida: discos USB externos e caminhadas.

Do meu jeito: use rsync. Se a cópia falhar, basta reiniciá-la e ela continuará onde foi deixada.


fonte
0

A outra coisa a verificar seria verificar se o serviço de cota está configurado no servidor de destino; Eu acho que ele usa 2 GB como a cota padrão por usuário.

Jason Cumberland
fonte