Sto passando ai provider di hosting e ho bisogno di trasferire milioni di file caricati su un nuovo server. Tutti i file si trovano nella stessa directory. Sì. Hai letto bene. ;)Come posso spostare in modo efficiente molti file su un nuovo server?
In passato ho fatto questo:
- Zip tutti i file dal server di origine
scp
la zip al nuovo server- Unzip directory
- Sposta posizione appropriata
- per qualsiasi motivo le mie cerniere dal passaggio 1 portano sempre il percorso insieme a loro e richiedono me a MV.
L'ultima volta che ho fatto questo ci sono voluti circa 4-5 giorni per completare e che era circa il 60% di quello che ho adesso.
Sto sperando in un modo migliore. Che cosa suggerisci?
La struttura del file è sottoposta a hash. Qualcosa di simile a questo: AAAAAAAAAA.jpg
-ZZZZZZZZZZ.txt
Ecco un idea che sta lanciando in giro:
Split le cerniere in tonnellate di mini-cerniere basato su 3 prefissi lettera. Qualcosa di simile:
AAAAAAAAAA.jpg - AAAZZZZZZZ.gif => AAA.zip
Pro teorici:
- potrebbe accelerare il trasferimento, consentendo a più cerniere di trasferire in una volta
- potrebbero limitare il tempo perso per il trasferimento non è riuscito. (In attesa di 2 giorni per un trasferimento a fallire è pessimo) Contro
teorici:
- potrebbe rallentare la zip iniziale notevolmente da quando la zip deve cercare i file attraverso un jolly (
AAA*
) , forse compensato eseguendo molti thread zip contemporaneamente, usando tutte le CPU invece di una sola. - Complessità?
Abbiamo anche pensato a rsync e scp, ma ci preoccupiamo delle spese di trasferimento di ogni file manualmente. E poiché il server remoto è vuoto, non devo preoccuparmi di cosa c'è già.
Cosa ne pensi? Come lo faresti?
(Sì, mi trasferirò questi per Amazon S3 alla fine, e mi limiterò a spedirli un disco, ma nel frattempo, ho bisogno di loro fino a ieri!)
E a proposito di rsync? –
In questo tipo di situazione la mia preoccupazione principale sarebbe quella di non ripetere il trasferimento piuttosto che trasferire velocemente. Una volta ho dovuto trasferire 100 GB di file in luoghi diversi da quelli di mare. Ho provato con file di grandi dimensioni e il caricamento non è riuscito a causa di un errore casuale e ho dovuto fare di nuovo tutto. Quindi quello che ho fatto è stato dividere i file in blocchi da 6 GB e inviarli in parallelo (3-4) alla volta. Era molto più veloce e più affidabile. Puoi semplicemente creare uno script per farlo automaticamente per te. – specialscope