Cloud Storage ti incoraggia a convalidare i dati trasferiti
da e verso i tuoi bucket. In questa pagina vengono descritte le best practice per ottenere
utilizzando i checksum CRC32C o MD5 e descrive la modifica
di rilevamento usato dal comando gcloud storage rsync
.
Proteggiti dal danneggiamento dei dati utilizzando hash
Esistono diversi modi in cui i dati possono essere danneggiati durante il caricamento scaricando dal cloud:
- Errori di memoria su computer client o server oppure router lungo il percorso
- Bug software (ad es. in una libreria utilizzata dai clienti)
- Modifiche al file di origine quando un caricamento si verifica per un periodo di tempo prolungato di ora
Cloud Storage supporta due tipi di hash che puoi utilizzare per controllare l'integrità dei tuoi dati: CRC32C e MD5. CRC32C è il metodo di convalida consigliato per eseguire i controlli di integrità. I clienti che preferiscono MD5 possono usare questo hash, ma gli hash MD5 non sono supportati per tutti gli oggetti.
Convalida lato client
Puoi eseguire un controllo dell'integrità dei dati scaricati eseguendo l'hashing dei dati nella e confrontare i risultati con i checksum forniti dal server. Tuttavia, tieni presente che i checksum forniti dal server si basino sull'oggetto completo, così come archiviati in Cloud Storage, il che significa che i seguenti tipi di download non possono essere convalidati utilizzando gli hash forniti dal server:
Download sottoposti a transcodifica decompressiva, a causa del il checksum fornito dal server rappresenta l'oggetto nello stato compresso, mentre ai dati pubblicati è stata rimossa la compressione e, di conseguenza, viene rimosso un hash diverso valore.
Una risposta contenente solo una porzione dei dati oggetto, che si verifica quando effettui una richiesta
range
. Cloud Storage consiglia di utilizzare l'intervallo richiede solo il riavvio del download di un oggetto completo dopo l'ultimo ricevuto, perché in questo caso è possibile calcolare e convalidare checksum al termine del download.
Nei casi in cui è possibile convalidare il download utilizzando i checksum, è necessario ignorare scaricati i dati con valori hash errati e utilizza logica consigliata per i nuovi tentativi per eseguire nuovamente la richiesta.
Convalida lato server
Cloud Storage esegue la convalida lato server nei seguenti casi:
Quando esegui una richiesta di copia o riscrittura in Cloud Storage.
Quando fornisci l'hash MD5 o CRC32C previsto di un oggetto in una richiesta di caricamento. Cloud Storage crea l'oggetto solo se l'hash fornito corrisponde alla il valore calcolato da Cloud Storage. Se non corrisponde, la richiesta viene rifiutato con un errore
BadRequestException: 400
.Nelle richieste dell'API JSON applicabili, fornisci i checksum come parte del oggetti della risorsa.
Nelle richieste dell'API XML applicabili, fornisci i checksum utilizzando Intestazione
x-goog-hash
. L'API XML accetta anche lo standard HTTP Intestazione Content-MD5 (consulta la specifica).In alternativa, puoi eseguire la convalida lato client dei caricamenti inviando una richiesta per i metadati dell'oggetto caricato, confrontando l'hash dell'oggetto caricato al valore previsto, eliminando in caso di mancata corrispondenza. Questo metodo è utile se l'oggetto MD5 o L'hash CRC32C non è noto all'inizio del caricamento.
Nel caso dei caricamenti compositi paralleli, gli utenti devono eseguire una dell'integrità del caricamento di ogni componente, quindi utilizza le precondizioni con le richieste di composizione per proteggersi dalle condizioni di gara. Componi richieste non eseguono la convalida lato server, quindi gli utenti che vogliono un'integrità end-to-end controllo deve eseguire la convalida lato client del nuovo oggetto composito.
Convalida di Google Cloud CLI
Per Google Cloud CLI, i dati vengono copiati in o da un servizio Cloud Storage
è convalidato. Questo si applica ai comandi cp
, mv
e rsync
. Se
il checksum dei dati di origine non corrisponde al checksum dei dati di destinazione
la gcloud CLI elimina la copia non valida e stampa un messaggio di avviso.
Questo accade molto raramente. In caso affermativo, devi riprovare a eseguire l'operazione.
Questa convalida automatica avviene dopo che l'oggetto stesso è stato finalizzato, quindi
gli oggetti non validi sono visibili per 1-3 secondi prima di essere identificati
eliminati. Inoltre, c'è la possibilità che gcloud CLI
interrotto al termine del caricamento, ma prima della convalida,
lasciando l'oggetto non valido. Questi problemi possono essere evitati durante il caricamento
singoli file in Cloud Storage utilizzando la convalida lato server,
che si verifica quando si utilizza il flag --content-md5
.
Rilevamento delle modifiche per rsync
Il comando gcloud storage rsync
può anche utilizzare i checksum MD5 o CRC32C per
determinare se esiste una differenza tra la versione di un oggetto
e la versione trovata nella destinazione. Il comando confronta i checksum
nei seguenti casi:
L'origine e la destinazione sono entrambi bucket cloud e l'oggetto ha un Checksum MD5 o CRC32C in entrambi i bucket.
L'oggetto non dispone di un'ora di modifica del file (
mtime
) in sorgente o destinazione.
Nei casi in cui l'oggetto pertinente ha un valore mtime
sia nell'origine che
di destinazione, ad esempio quando l'origine e la destinazione sono file system,
Il comando rsync
confronta l'oggetto dimensioni e mtime
, anziché utilizzare
i checksum. Analogamente, se l'origine è un bucket Cloud e la destinazione è
file system locale, il comando rsync
utilizza l'ora creata per l'origine
in sostituzione di mtime
e il comando non utilizza i checksum.
Se non sono disponibili né mtime
né i checksum, rsync
confronta solo le dimensioni dei file
quando determini se c'è una variazione tra la versione di origine di un oggetto
e la versione di destinazione. Ad esempio, né mtime
né i checksum
disponibili quando si confrontano oggetti composti con oggetti presso un provider cloud
che non supporta CRC32C, perché gli oggetti compositi non hanno checksum MD5.
Passaggi successivi
- Esplora le opzioni di caricamento e download per Cloud Storage.
- Scopri di più sulle strategie per i nuovi tentativi di Cloud Storage.