Qual è il modo più semplice e veloce per trasferire file di grandi dimensioni attraverso una rete Windows?


14

Ho una macchina Windows Server 2000 con MS SQL Server che memorizza oltre 20 GB di dati. Viene eseguito il backup del database ogni giorno sul secondo disco rigido. Voglio trasferire quei file di backup su un altro computer per creare un altro server di prova e per esercitarmi nel recupero. (il backup non è mai stato ripristinato per quasi 5 anni. Non dirlo al mio capo!)

Ho difficoltà a trasferire quel file enorme attraverso la rete. Ho provato la semplice copia in rete, il download di apache e ftp. Qualsiasi metodo che ho provato finisce per fallire quando la quantità di dati trasferiti raggiunge i 2 GB. L'ultima volta che ho trasferito con successo il file, è stato tramite un disco rigido esterno collegato tramite USB. Ma voglio svolgere questo compito di routine e preferibilmente automaticamente.

Mi chiedo qual è l'approccio più pragmatico per questa situazione?


Quale file system stai utilizzando sul disco su cui stai trasferendo?
Marko Carter,

NTFS. È importante?
Sake,

È importante perché il filesystem di destinazione potrebbe avere un limite di dimensioni del file di 2 GB che potrebbe aver causato l'errore sempre a 2 GB. Ma è NTFS quindi probabilmente non è così :)
Lucas,

Sì, scommetto che in realtà non è NTFS.
Brent Ozar,

Risposte:


16

Un errore prevedibile a 2 Gb suona come la colpa del filesystem di destinazione ... Sono entrambi su NTFS? Stai eseguendo il piping attraverso qualsiasi compressione (zip utilizzata per fallire a limiti di 2 GB) ((apache sta eseguendo la compressione))

Ho copiato molti file oltre i 20 GB usando robocopy (come altri hanno già detto) ma eviterei di usare l'opzione / MIR fino a quando non sei sicuro di avere la copia che fa quello che vuoi - poiché eliminerà i file e li copierà.

SMB soffre di un solo pacchetto alla volta, quindi spesso è il modo più lento di copiare i file: hai la possibilità di copiarli usando push o pull. Personalmente, preferisco il metodo push (la copia è iniziata dalla fonte).


3
Completamente d'accordo. 2 GB è un collo di bottiglia comune per i filesystem FAT. Verificherei molto attentamente per assicurarmi di non provare a copiare su un filesystem FAT.
Brent Ozar,

ho pensato che fosse 4 GB?
Journeyman Geek,

10

Lo strumento MS Exchange eseutil è un'utilità eccellente per copiare rapidamente file di grandi dimensioni attraverso una rete:

eseutil / y file_origine / d file_destin.


+1 Non avrei mai pensato di usarlo per qualcosa di diverso da Exchange! Dovrò fare un vortice.
squillman,

3
Da technet.microsoft.com/en-us/library/aa998673(EXCHG.80).aspx "La modalità di copia dei file di Exchange Server Utilities (Eseutil.exe) / Y è ottimizzata per copiare file di grandi dimensioni in modo efficiente. È possibile utilizzare il / Y per copiare un file di database o un file di registro. Tuttavia, la modalità non è adatta come utilità di copia per scopi generici "
Goyuix

+1, questo è probabilmente l'effetto collaterale più straordinario di un'utilità di manutenzione del database di cui non si sia mai sentito parlare!
Massimo

6

Consiglio vivamente di utilizzare l'utilità gratuita RichCopy . È multithread e può mettere in pausa e riprendere le operazioni di copia dei file. Ho avuto molta fortuna ad usarlo per trasferire file tra i server.

I miei tre consigli principali per l'utilizzo di RichCopy

  1. Se stai copiando uno o alcuni file di grandi dimensioni, imposta l'attributo 'Copia file' su più di '1'. Utilizza risorse ma copia i file di grandi dimensioni più rapidamente

  2. Se stai copiando molti file, imposta gli attributi 'Numero thread' su 10-10-1. Questo copierà più file più velocemente

  3. Se si esegue la copia su una connessione non sicura. Puoi rieseguire il download e andrà a trovare i file che non è riuscito a ottenere la prima volta.

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


5

Per quanto riguarda le utilità di copia dei file, TeraCopy è una buona interfaccia basata su GUI (non riga di comando) che può mettere in coda molti file, supporta la pausa e la ripresa, può modificare dinamicamente le dimensioni del buffer per ottimizzare la velocità e facoltativamente sostituire il valore predefinito di Windows Explorer copia / sposta con i propri.


3

Robocopy con l'opzione / MIR è molto utile per backup rapidi e sporchi tra le macchine. È possibile trovare robocopy nel Resouce Kit di Windows Server 200X

MIR eseguirà il MIRror del contenuto di una directory su un altro server. Copia solo i file che sono stati modificati.


2
/ Z è anche un'opzione dolce. Ti consente di riprendere le copie non riuscite. Questo mi ha salvato la vita su reti lente
Nick Kavadias,

2

La soluzione più pragmatica ai ripetuti shuffle di file di backup di SQL Server di grandi dimensioni consiste nell'utilizzare un prodotto di compressione di backup di terze parti o la compressione di backup integrata di SQL Server 2008 Enterprise Edition.

Ce ne sono diversi là fuori da diversi fornitori. Lavoro per Quest Software, i produttori di LiteSpeed, ma non sono qui per vendere nulla. Vuoi controllare tutti i prodotti là fuori e decidere quale sia la migliore per le tue esigenze. Ecco un recente post sul blog che parla specificamente di LiteSpeed, ma gli stessi concetti si applicano anche ad altri prodotti:

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


1

Stai copiando il file su una LAN o tramite una connessione WAN come ADSL? Presumo sia una WAN perché 20 GB non è un file di grandi dimensioni da copiare su una LAN. Copio molti di questi file ogni giorno.

Se si tratta di una connessione WAN, il modo in cui lo faccio è utilizzare la versione Cygwin di rsync.

JR


1

Ho avuto problemi con i trasferimenti di rete intorno al segno da 2 GB - si è rivelata una scheda di rete difettosa.


3
scheda di rete difettosa sempre fallita intorno a 2 GB? strano!
Lucas,

forse questa scheda di rete aveva hardware TCP accelerato con un bug?
qbeuek,

Non sono sicuro al 100% di cosa ci fosse di sbagliato nella NIC stessa, ma è stata una faccenda senza marchio da eBay - non appena l'ho sostituita, i trasferimenti di rete sono migliorati notevolmente senza calo della connettività.
Lazlow,


1

È un po 'tardi, ma consiglierei un backup di terze parti e l'opzione di ripristino dell'applicazione. Utilizziamo Red Gate SQL Backup ( www.red-gate.com ), con opzioni di compressione e posizione alternativa nella GUI. Ottengo un risparmio di compressioni dell'80% in media, quindi trasferisci solo il 20% della dimensione effettiva del db. Supporta anche la crittografia in modo che possa essere utilizzato su una WAN senza preoccupazioni di intercettazione.

È completamente programmabile, quindi può essere eseguito automaticamente in un ciclo di tua scelta.

La GUI consente inoltre di configurare e amministrare il log shipping.

Versione di prova gratuita disponibile sopra.


0

Non ho esperienza con un file così grande, ma potresti usare robocopy o anche xcopy con l'opzione / Z che afferma di essere riavviabile. Sembra che questo sia destinato a copie di file di grandi dimensioni in cui la rete non è affidabile.


0

Ho usato robocopy per oltre 1 GB e non ho avuto problemi. ss64.com ha una buona spiegazione degli switch. Non posso pubblicare il link però :-(


0

Risposta diabolica

Usa Netcat . Un tutorial orientato unix per il trasferimento di file è disponibile qui . Puoi velocizzare ulteriormente le cose:

  1. Comprimi sul lato mittente e decomprimi sul lato di destinazione. (chuck windows equivalente di gzip nel mezzo delle righe di comando.)
  2. Scegli di inviare i dati tramite udp anziché tramite tcp (hey amico, a chi importa dell'integrità dei dati ?? !!)

Scherzi a parte, netcat è probabilmente il modo più rapido per trasferire file di grandi dimensioni su una LAN. Poiché non viene eseguito alcun checksum, è possibile che si desideri eseguire una somma MD5 del file prima di inviarlo e confrontarlo con la somma MD5 del file ricevuto.

Ho usato molto Netcat in questo modo, non l'ho mai visto fallire, non l'ho mai visto non riuscire a massimizzare la rete.


Forse Netcat è facile e veloce da usare, ma non avevo ottenuto alte velocità con esso. IIRC riesce a malapena a raggiungere 2-3 MB / s. Quando si tratta di accelerare fa schifo troppo.
Cristian Ciupitu,

Sento alcuni test delle prestazioni in corso ... Vedrò se riesco a trovare il tempo per confrontare nfs, cifs, ftp e nc sulla mia rete domestica locale.
Matteo,

Se netcat ti dà solo 2-3 MB / s il tuo sistema è guasto. ftp e netcat dovrebbero entrambi funzionare in modo identico. Anche nfs e cifs sono generalmente uguali.
Giustino,

0

Potrebbe valere la pena suddividere il file in blocchi più piccoli come soluzione a breve termine fino a quando non è possibile individuare il problema. Abbiamo avuto problemi simili a questo in passato e ftp ha sempre funzionato per noi


0

Se questi sono file SQL .bak che stai copiando, ti consiglio vivamente di effettuare una delle seguenti operazioni per ridurre i file prima della copia:

  • Ridurre il database e troncare il registro prima di eseguire il backup. O
  • Comprimi il file .bak prima di copiarlo. I file SQL .bak vengono compressi se non si utilizza lo spazio completamente allocato nei file di dati e di registro.

Potrebbe eliminare la necessità di un metodo alternativo per copiare file di grandi dimensioni.


Ci ho provato. Purtroppo non c'è molto aiuto.
Sake,

Solo per curiosità, quindi ... Hai la tua crescita automatica impostata su un valore di byte hard o su un%? O hai mai impostato la funzione di aumento automatico?
squillman,

0

Non penso che trovare qualcosa da trasferire più velocemente sia il tuo problema, controlla bene che il tuo file system di destinazione NON sia GRASSO, come altri hanno già detto. Inoltre, assicurati che le schede NIC su entrambi i lati abbiano driver aggiornati e che non si comportino diversamente.

Detto questo, stai spostando molti file di piccole dimensioni o solo pochi file di grandi dimensioni? Ho riscontrato problemi con il controller RAID durante il tentativo di spostare milioni di piccoli file.

Non credo che avrai un problema nell'automatizzare questo una volta che avrai capito cosa sta causando l'errore. Può essere utile elencare maggiori dettagli sull'hardware e su eventuali errori rilevanti che potresti vedere nel Visualizzatore eventi.


0

Hai provato a utilizzare una connessione eSATA a un disco rigido esterno? Le connessioni sono molto veloci (3 gigabit!) E dovrebbero essere in grado di trasferire quel file in pochissimo tempo!

Qual è la velocità della tua scheda di rete sul server, 10/100 o 10/100/1000? Che aspetto ha la larghezza di banda della rete del server e lo switch quando si sta copiando il file? Come appare la larghezza di banda della rete della posizione di destinazione (server?) Durante la copia? Hai provato a riunire insieme 2 schede di rete? I driver della scheda di rete sono aggiornati? Il BIOS è aggiornato?

Ci sono molte cose che potrebbero essere il problema per i trasferimenti di file. Accertarsi che i driver hardware e il BIOS siano aggiornati può davvero fare la differenza.

-JFV


0

Il modo più semplice e veloce: dischi USB esterni e walking.

A modo mio: usa rsync. Se la copia fallisce, basta riavviarla e riprenderà da dove era rimasta.


0

L'altra cosa da verificare sarebbe vedere se il servizio di quota è impostato sul server di destinazione; Penso che utilizzi 2 GB come quota predefinita per utente.

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.