Qual è un modo pratico per eseguire il mirroring di un bucket Amazon S3?


9

Voglio rispecchiare i miei secchi Amazon S3. Voglio farlo perché 1) Non voglio che tutti i miei dati esistano solo con un provider; e 2) in caso di errore del software o violazione della sicurezza, voglio avere il backup dei dati.

Posso eseguire il mirroring su un disco locale con la funzione di sincronizzazione s3cmd, ma ciò non si adatta a bucket molto grandi e non è utile per ripristini rapidi del backup. Preferirei che i miei dati fossero rispecchiati a un concorrente come Rackspace Cloud Files.

Qualcuno ha qualche suggerimento su un modo semplice e robusto per facilitare questo tipo di mirroring in modo automatizzato su un box Linux?


È corretto supporre che nessuna delle risposte risolva effettivamente "1) Non voglio che tutti i miei dati esistano solo con un provider", perché tutti rispecchiano solo bucket all'interno dello stesso provider?
Chris,

Risposte:


6

Puoi usare l' utility " s3cmd " con l'opzione "sync", anche se mi sono imbattuto nella tua domanda perché sto cercando di capire se questo meccanismo di sincronizzazione sta rovinando i miei backup di duplicati.


questa è davvero la migliore soluzione che ho trovato s3tools.org/s3cmd-sync
John Bachir,

5

Avevo lo stesso problema, quindi ho creato un piccolo programma appositamente progettato per rispecchiare un bucket S3 su un altro; Lo chiamo s3s3mirror.

Prima ho provato l'approccio "s3cmd sync", ma avevo un secchio con centinaia di migliaia di oggetti e "s3cmd sync" era seduto lì, non facendo altro che consumare sempre più memoria fino alla morte del mio sistema. Ho progettato s3s3mirror per iniziare immediatamente, per usare 100 thread simultanei (configurabili) e per fare un uso modesto di CPU e memoria. Se lo dico io stesso, è abbastanza veloce.

L'ho reso disponibile su github con una licenza Apache. Se decidi di provare, fammi sapere cosa ne pensi e se c'è qualcosa che può essere migliorato.

Ecco il link: https://github.com/cobbzilla/s3s3mirror

Grazie!

  • Jonathan.

Grazie per il tuo lavoro, ho creato un eseguibile contenitore docker da questo e lo uso già in produzione: github.com/pmoust/s3s3mirror-docker
Panagiotis Moustafellos

4

Amazon ora ha uno strumento supportato per farlo, Aws Cli .

Può eseguire il mirroring in entrambe le direzioni tra locale e remoto o tra due posizioni s3.

Sfortunatamente non ha alcun supporto diretto per posizioni non S3 come rackspace, ma ho pensato che sarebbe stata una risposta utile per alcuni che trovano questa domanda. Come me, prima di trovarlo.

In particolare,

aws s3 sync s3://some/s3/path /some/local/path

2

Dai un'occhiata a Jungle Disk Server . Funziona con Amazon S3 e Rackspace Cloud Files. Puoi montare S3 e CF in diverse posizioni sul tuo filesystem e quindi usare rsync tra i due.


Grazie, ma avrei dovuto menzionare che sto cercando una soluzione che posso eseguire come cron job su un box Linux. Ho aggiornato la domanda.
Ben

2

Potresti provare a montare i secchi con fusibile usando s3fs . Una volta fatto, puoi quindi risincronizzare dal punto di montaggio sul tuo disco locale.


1
+1 per s3fs, ho appena impegnato una patch per supportare file di dimensioni fino a 5 TB.
ben lemasurier,

1

Puoi configurare server Minio , API open source e compatibili S3. È possibile configurarlo su EC2 o su qualsiasi provider cloud come server alternativo e utilizzando periodicamente il comando client Minio mc mirror prendere mirror of S3. Puoi automatizzare lo stesso scrivendo un semplice cron script.

Spero che sia d'aiuto. Disclaimer: lavoro per Minio


1

Per la sincronizzazione online dei bucket è possibile utilizzare la replica tra regioni. In questo modo tutti gli aggiornamenti al bucket originale verranno automaticamente sincronizzati con il bucket S3 in un'altra regione: https://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html

Tieni presente che richiede il versioning abilitato per il bucket, quindi se esegui aggiornamenti / eliminazioni di oggetti in bucket, ti consigliamo di abilitare i criteri del ciclo di vita per eliminare vecchi oggetti.


Questo è ciò che abbiamo scelto di usare, ma nota che la replica non è la stessa del mirroring. La grande differenza è che le eliminazioni non vengono propagate tra l'origine e la destinazione (la destinazione aggiornerà i file che cambiano, ma sembra non rimuoverli mai).
Scott Gartner,
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.