Sauvegarde des données stockées sur Amazon S3

16

J'ai une instance EC2 exécutant un serveur Web qui stocke les fichiers téléchargés des utilisateurs sur S3. Les fichiers sont écrits une seule fois et ne changent jamais, mais sont parfois récupérés par les utilisateurs. Nous accumulerons probablement quelque part entre 200 et 500 Go de données par an. Nous souhaitons garantir la sécurité de ces données, en particulier contre les suppressions accidentelles, et souhaiter pouvoir restaurer les fichiers supprimés quelle qu'en soit la raison.

J'ai lu des informations sur la fonction de gestion des versions pour les compartiments S3, mais je n'arrive pas à trouver si la récupération est possible pour les fichiers sans historique de modification. Consultez les documents AWS ici sur la gestion des versions:

http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html

Dans ces exemples, ils ne montrent pas le scénario dans lequel les données sont téléchargées, mais jamais modifiées, puis supprimées. Les fichiers supprimés dans ce scénario sont-ils récupérables?

Ensuite, nous avons pensé que nous pourrions simplement sauvegarder les fichiers S3 sur Glacier en utilisant la gestion du cycle de vie des objets:

http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html

Mais, il semble que cela ne fonctionnera pas pour nous, car l'objet fichier n'est pas copié dans Glacier mais déplacé vers Glacier (plus précisément, il semble que ce soit un attribut d'objet qui soit modifié, mais de toute façon ...).

Il semble donc qu'il n'y ait aucun moyen direct de sauvegarder les données S3, et le transfert des données de S3 vers des serveurs locaux peut prendre du temps et entraîner des coûts de transfert importants au fil du temps.

Enfin, nous avons pensé créer un nouveau bucket chaque mois pour servir de sauvegarde complète mensuelle, et copier les données du bucket d'origine vers le nouveau le jour 1. Puis utiliser quelque chose comme la duplicité ( http://duplicity.nongnu.org/ ), nous synchroniserions le compartiment de sauvegarde tous les soirs. À la fin du mois, nous plaçions le contenu du compartiment de sauvegarde dans le stockage Glacier et créons un nouveau compartiment de sauvegarde en utilisant une nouvelle copie actuelle du compartiment d'origine ... et répétons ce processus. Il semble que cela fonctionnerait et minimiserait les coûts de stockage / transfert, mais je ne suis pas sûr que la duplicité permette les transferts de compartiment à compartiment directement sans apporter les données au client contrôlant au préalable.

Donc, je suppose qu'il y a quelques questions ici. Premièrement, le contrôle de version S3 permet-il la récupération de fichiers qui n'ont jamais été modifiés? Existe-t-il un moyen de "copier" des fichiers de S3 vers Glacier que j'ai manqué? La duplicité ou tout autre outil peut-il transférer des fichiers entre des compartiments S3 directement pour éviter les coûts de transfert? Enfin, suis-je loin de la marque dans mon approche de la sauvegarde des données S3?

Merci d'avance pour toute information que vous pourriez fournir!

Mise à jour

Amazon a récemment annoncé que le contrôle de version fonctionne désormais avec les règles du cycle de vie

Billet de cinq livres
la source
aws.amazon.com/blogs/aws/archive-s3-to-glacier/… + il y a une belle courte vidéo youtube en bas expliquant s3 au glacier
équivalent8

Réponses:

10

J'ai lu des informations sur la fonctionnalité de gestion des versions pour les compartiments S3, mais je n'arrive pas à trouver si> la récupération est possible pour les fichiers sans historique de modification. Consultez les documents AWS ici sur> versioning:

Je viens d'essayer ça. Oui, vous pouvez restaurer à partir de la version d'origine. Lorsque vous supprimez le fichier, il crée un marqueur de suppression et vous pouvez restaurer la version avant cela, c'est-à-dire: la révision unique.

Ensuite, nous avons pensé que nous pourrions simplement sauvegarder les fichiers S3 sur Glacier en utilisant la gestion du cycle de vie des objets:

Mais, il semble que cela ne fonctionnera pas pour nous, car l'objet fichier n'est pas copié dans Glacier mais> déplacé vers Glacier (plus précisément, il semble que c'est un attribut d'objet qui est modifié, mais> de toute façon ...).

Glacier est vraiment destiné au stockage à long terme, qui est très rarement utilisé. Il peut également être très coûteux de récupérer une grande partie de vos données en une seule fois, car il n'est pas destiné à la restauration ponctuelle de beaucoup de données (en pourcentage).

Enfin, nous avons pensé que nous créerions un nouveau compartiment chaque mois pour servir de sauvegarde complète mensuelle, et copier les données du compartiment d' origine dans le nouveau le jour 1. Ensuite, en utilisant quelque chose comme la duplicité ( http: //duplicity.nongnu. org / ) nous synchroniserions le compartiment de sauvegarde tous les> soirs.

Ne faites pas cela, vous ne pouvez avoir que 100 compartiments par compte, donc en 3 ans, vous aurez utilisé un tiers de votre allocation de compartiment avec seulement des sauvegardes.

Donc, je suppose qu'il y a quelques questions ici. Premièrement, le versionnage S3 permet-il la récupération de> fichiers qui n'ont jamais été modifiés?

Oui

Existe-t-il un moyen de "copier" des fichiers de S3 vers Glacier que j'ai manqué?

Pas que je sache de

Sirex
la source
Merci Sirex, une précision: nous avions l'intention de ne conserver qu'un seul compartiment de sauvegarde à la fois (le mois en cours), et d'archiver la sauvegarde du dernier mois sur Glacier, puis de supprimer les copies de Glacier sur une politique de rétention générale (chaque mois pendant 3 mois, puis trimestriel pendant un an). Pensez-vous que cela soit possible ou existe-t-il une autre limitation AWS empêchant cette stratégie?
Fiver
hmm, je suppose que c'est raisonnable. Je n'ai pas essayé cela en colère (ou glacier d'ailleurs, nous utilisons Sydney et ce n'était pas disponible quand nous l'avons examiné)
Sirex
3

je n'aime pas avoir monté s3, car son lent et peut se bloquer et fonctionne comme nfs old school. mieux juste monter / descendre au besoin.

http://s3tools.org/s3cmd

son script facile ... n'oubliez pas votre fichier ~ / .s3cfg

nandoP
la source
Wow, ça a l'air cool!
JakeGould
@nandoP +1 J'avais pensé utiliser le s3cmd et rouler le mien
Fiver
1

On dirait que vous pourriez avoir besoin de S3FS qui monte essentiellement vos compartiments S3 comme s'il s'agissait de systèmes de fichiers locaux:

http://code.google.com/p/s3fs/wiki/FuseOverAmazon

Je préfère utiliser cette version fourchue car elle conserve la même structure de dossiers que celle créée dans le panneau de configuration Web pour Amazon S3:

https://github.com/tongwang/s3fs-c

Ensuite, j'ai quelques scripts shell en place qui servent essentiellement rsyncà synchroniser les données avec mes configurations locales.

En général, je trouve que S3FS fonctionne mieux pour lire le contenu placé dans les compartiments Amazon S3. L'écriture n'est pas aussi cohérente. Mais pour sauvegarder les godets S3, la fourche Tony Wang de S3FS fonctionne très bien.

JakeGould
la source
1
Cela semble utile. Est-il transféré directement entre les compartiments, sans téléchargement pour le client?
Fiver
Peut-être que oui. Je l'utilise principalement pour monter sur un serveur local et sauvegarder sur nos machines locales. Mais comme il a une capacité d'écriture, je ne dirais pas que je l'utilise comme «intermédiaire» pour mélanger les données entre les compartiments. Fondamentalement, sur une machine intermédiaire, montez un godet sur un point de montage. Montez ensuite l'autre godet comme autre point de montage. Et puis faites juste un rsync. Mais comme je l'ai dit, les heures / dates de modification peuvent être étranges avec Amazon S3 car ce n'est pas vraiment un système de fichiers. Mais expérimentez.
JakeGould