sviluppo-web-qa.it

Come si esegue il backup di un bucket AWS S3 senza eseguire il versioning del bucket di origine

Esiste un modo per recuperare dalle eliminazioni accidentali di un bucket Amazon S3?

Abbiamo informazioni importanti nei nostri bucket e devo mitigare il rischio di eliminazioni accidentali o dannose del bucket stesso.

So che posso sincronizzare l'intero bucket localmente, ma questo non è troppo pratico se la mia dimensione del bucket è di 100 GB.

Qualche idea sulle strategie di backup?

44
Nikhil Gupte

Un altro approccio è abilitare il versioning S3 sul tuo bucket. È quindi possibile ripristinare i file eliminati ecc. Consultare la documentazione S3 per come abilitare questo

L'uso di strumenti di terze parti come BucketExplorer rende piuttosto banale lavorare con il versioning (anziché chiamare direttamente l'API).

Puoi anche abilitare l'eliminazione dell'autenticazione a più fattori per i bucket S3, il che rende un po 'più difficile la "cancellazione accidentale";)

Altre informazioni sull'eliminazione dell'autenticazione a più fattori
Altre informazioni sull'eliminazione di oggetti

23
snarkyboojum

È possibile utilizzare s3cmd http://s3tools.org/s3cmd

Quindi per fare il backup di un bucket chiamato mybucket

s3cmd mb s3://mybucket_backup
s3cmd --recursive cp s3://mybucket s3://mybucket_backup
13
Ian Purton

Questa non è una soluzione economica, ma se i tuoi bucket sono davvero fondamentali, ecco come farlo: avvia un istanza Amazon EC2 e sincronizza periodicamente il contenuto lì.

Amazon EC2 è il loro provider di hosting di virtualizzazione. Puoi creare istanze di Linux, Windows, ecc. Ed eseguire tutto ciò che desideri. Paghi a ore e ottieni uno spazio di archiviazione abbastanza grande localmente per quel server. Ad esempio, utilizzo l'istanza di dimensioni "grandi", che viene fornita con 850 GB di spazio su disco locale.

La parte interessante è che si trova sulla stessa rete di S3 e ottieni trasferimenti illimitati tra S3 ed EC2. Uso il software $ 20 Jungle Disk su un'istanza di Windows EC2, che mi consente di accedere ai miei bucket S3 come se fossero cartelle del disco locale. Quindi posso fare file batch programmati per copiare roba da S3 e sul mio spazio su disco EC2 locale. Puoi automatizzarlo per mantenere i backup orari se vuoi, o se vuoi giocare d'azzardo, imposta JungleDisk (o i suoi equivalenti Linux) per la sincronizzazione una volta all'ora circa. Se qualcuno elimina un file, hai almeno qualche minuto per recuperarlo da EC2. Consiglierei comunque i backup con script regolari: è facile conservare alcuni giorni di backup se li comprimi su un volume da 850 GB.

Questo è davvero utile per la distribuzione dei log di SQL Server, ma posso vedere come raggiungerebbe anche il tuo obiettivo.

7
Brent Ozar

Una possibile soluzione potrebbe essere semplicemente quella di creare un "secchio di backup" e duplicare lì le tue informazioni sensibili. In teoria i tuoi dati sono più sicuri in S3 che nel tuo disco rigido.

Inoltre, non sono sicuro se le cancellazioni accidentali siano un vero problema perché dovrai accidentalmente eliminare tutte le chiavi del bucket prima di poter eliminare il bucket.

7
JAG

Per modificare un po 'la risposta (eccellente) di Brent; non dovresti aver bisogno di mantenere l'istanza in esecuzione. Crea un AMI EC2 che abbassa i tuoi dati, li sincronizza su un volume EBS, scatta il volume e si spegne.

È possibile mantenere il volume in esecuzione anche da solo, ma lo snapshot dovrebbe essere sufficiente per un backup. Se la tua AMI personalizzata fa tutto questo (incluso lo spegnimento automatico dopo averlo fatto) senza interazione, lo script di "backup" deve solo "ec2run -n 1 -t m1.small AMI-" e sparare e dimenticare.

6
Andrew Lusk

Un'altra possibile soluzione è replicare il secchio nella zona Europa in S3. Ciò può persistere nel secchio dopo la cancellazione accidentale abbastanza a lungo da recuperare.

6
shawnswaner