2014-04-08 7 views
6

Sto provando a caricare i dati su Google Cloud Storage da un disco con ~ 3000 file per un totale di 1 TB. Sto usando gsutil cp -R <disk-top-directory> <bucket>. La mia comprensione è che, se gsutil viene ripreso/riavviato, utilizza i checksum per determinare quando un file è già stato caricato e lo ignora.Riprendi gsutil sembra ricaricare i file

Non sembra che stia facendo questo: sembra riprendere il caricamento dall'alto e la sostituzione dei file tutto da capo. Quando eseguo i successivi gsutil ls -Rl <bucket/disk-top-directory> a dieci minuti di distanza e li confronta con diff, vedo quelli che sembrano gli stessi file con le stesse dimensioni ma una data (più recente) modificata. (Vale a dire in linea con lo stesso file in fase di re-inserito.)

Ad esempio:

< 404104811 2014-04-08T14:13:44Z gs://my-bucket/disk-top-directory/dir1/dir2/dir3/dir4/dir5/file-20.tsv.bz2 
--- 
> 404104811 2014-04-08T14:43:48Z gs://my-bucket/disk-top-directory/dir1/dir2/dir3/dir4/dir5/file-20.tsv.bz2 

La macchina che sto usando per leggere il disco e il trasferimento di file è in esecuzione Ubuntu 13.10. Ho installato gsutil usando le istruzioni pip per Debian e Ubuntu.

Sto fraintendendo come si suppone che i trasferimenti di riassunto di gsutil funzionino? In caso contrario, qualsiasi diagnosi e correzione per ottenere il corretto comportamento di ripresa? Grazie in anticipo!

risposta

5

È necessario utilizzare l'opzione -n ​​(No-clobber) per impedire il ri-caricamento di oggetti già presenti nella destinazione.

gsutil cp -Rn <disk-top-directory> <bucket> 

Da l'aiuto (aiuto cp gsutil)

-n   No-clobber. When specified, existing files or objects at the 
       destination will not be overwritten. Any items that are skipped 
       by this option will be reported as being skipped. This option 
       will perform an additional HEAD request to check if an item 
       exists before attempting to upload the data. This will save 
       retransmitting data, but the additional HTTP requests may make 
       small object transfers slower and more expensive. 

Inoltre according to this, durante il trasferimento di file su 2MB, gsutil utilizza automaticamente una modalità di trasferimento resumable.

+0

Grazie! Questo ha risolto il mio problema. Questi file erano ben più di 2 MB, quindi o la modalità di trasferimento ripristinabile non è quella che pensavo fosse, o qualcosa è andato storto, o la mia versione di gsutil era scaduta/sincronizzata con la documentazione online (forse perché ho usato pip) . Felice di avere una soluzione! – MPBall

0

Se si è aperti a lavorare con (ancora beta) gsutil v4, quella versione di gsutil ha un comando rsync. È possibile ottenere questo eseguendo: gs aggiornamento

gsutil: //prerelease/gsutil_4.0beta2pre_minus_m_sugg.tar.gz

Si prega di essere sicuri di leggere le note di rilascio prima di passare a questa nuova importante release, soprattutto se si' ri usando gsutil v3 negli script.