Aller au contenu

Gérer vous buckets S3 avec s3cmd

Mise à jour :

Je vous propose de découvrir S3cmd, un outil en ligne de commande spécialement conçu pour interagir avec le service S3. Ce service permet de stocker et de gérer des données sous forme de buckets. Grâce à S3cmd, vous pouvez gérer ces buckets et les fichiers qu’ils contiennent directement depuis votre terminal. Que ce soit pour transférer des fichiers, synchroniser des dossiers ou automatiser des tâches de gestion de données, S3cmd vous offre une solution simple et efficace. Ce guide vous donnera les bases pour commencer à utiliser cet outil avec aisance.

Installation de S3cmd

Pour commencer à utiliser S3cmd avec votre service S3, il est nécessaire de l’installer sur votre système. Heureusement, S3cmd est compatible avec les principales plateformes : Linux, Windows, et macOS.

Installation sur Linux

Sur les distributions Linux comme Ubuntu, Debian, ou CentOS, l’installation de S3cmd est simple grâce au gestionnaire de paquets. Vous pouvez utiliser la commande suivante pour installer S3cmd :

Terminal window
sudo apt-get install s3cmd

Si vous utilisez une distribution basée sur Red Hat, utilisez plutôt yum :

Terminal window
sudo yum install s3cmd

Pour d’autres distributions, vous pouvez compiler S3cmd depuis les sources disponibles sur le dépôt GitHub du projet.

Installation sur macOS

Pour les utilisateurs de macOS, S3cmd peut être installé via Homebrew, un gestionnaire de paquets populaire sur cette plateforme. Exécutez la commande suivante dans le terminal :

Terminal window
brew install s3cmd

Cela téléchargera et installera S3cmd automatiquement.

Installation sur Windows

Sur Windows, S3cmd peut être installé en utilisant Python et pip, le gestionnaire de paquets Python. Assurez-vous d’avoir Python installé, puis exécutez la commande suivante dans l’invite de commandes :

Terminal window
pip install s3cmd

Après l’installation, vous devriez pouvoir accéder à S3cmd en tapant s3cmd dans votre terminal ou invite de commandes.

Vérification de l’installation

Une fois l’installation terminée, vous pouvez vérifier que tout est en ordre en exécutant la commande suivante :

Terminal window
s3cmd --version

Si S3cmd est correctement installé, cette commande affichera la version de l’outil actuellement installée sur votre système. Vous êtes maintenant prêt à configurer S3cmd pour l’utiliser avec vos buckets S3.

Configuration de S3cmd

Après avoir installé S3cmd, la prochaine étape consiste à le configurer pour qu’il puisse interagir avec votre service S3. Dans ce guide, je vais vous montrer comment configurer S3cmd en utilisant le service OUTSCALE Object Storage (OOS), compatible avec l’API S3.

Pour démarrer la configuration, ouvrez votre terminal et exécutez la commande suivante :

Terminal window
s3cmd --configure

Lors de l’exécution de l’assistant de configuration, vous devrez fournir les informations suivantes :

  • Votre clé d’accès (Access Key) : Il s’agit de l’identifiant de votre compte qui permet à S3cmd d’accéder à votre service S3.
  • Votre clé secrète (Secret Key) : Elle fonctionne comme un mot de passe pour sécuriser l’accès à votre compte.
  • Votre région : Pour OUTSCALE, vous pouvez utiliser par exemple la région eu-west-2.
  • Endpoint S3 : Vous devez spécifier l’endpoint suivant pour OUTSCALE : oos.eu-west-2.outscale.com.
  • Nom DNS pour les buckets : Spécifiez ce format : %(bucket)s.oos.eu-west-2.outscale.com.

Une fois les informations de base fournies, S3cmd crée un fichier de configuration .s3cfg dans votre répertoire personnel. Pour finaliser la configuration, vous devrez modifier ce fichier pour spécifier l’endpoint du site web comme suit :

website_endpoint = https://%(bucket)s.oos-website-%(location)s.oos.eu-west-2.outscale.com/

Cette modification permet de s’assurer que l’URL utilisée pour accéder à vos objets via HTTP soit correctement formée.

Les commandes de base avec S3cmd

Une fois S3cmd installé et configuré, il est temps de se familiariser avec les commandes de base pour gérer vos buckets S3 et les objets qu’ils contiennent.

Créer un Bucket

La première étape pour stocker des objets est de créer un bucket. Pour cela, utilisez la commande suivante :

Terminal window
s3cmd mb s3://NOM_DU_BUCKET

Cette commande crée un nouveau bucket nommé NOM_DU_BUCKET. Par exemple, pour créer un bucket appelé “mes-donnees”, vous saisiriez :

Terminal window
s3cmd mb s3://mes-donnees

Lister les Buckets

Pour vérifier quels buckets existent déjà sur votre compte, utilisez la commande :

Terminal window
s3cmd ls

Cette commande renvoie une liste de tous les buckets associés à vos credentials. Vous verrez également la date de création de chaque bucket.

Lister le Contenu d’un Bucket

Pour voir ce qui se trouve à l’intérieur d’un bucket, utilisez la commande ls avec le nom du bucket :

Terminal window
s3cmd ls s3://NOM_DU_BUCKET

Par exemple :

Terminal window
s3cmd ls s3://mes-donnees

Cela listera tous les fichiers et dossiers présents dans le bucket “mes-donnees”.

Déposer un Objet dans un Bucket

Pour transférer un fichier de votre ordinateur vers un bucket S3, utilisez la commande put :

Terminal window
s3cmd put MON_FICHIER s3://NOM_DU_BUCKET

Par exemple, pour envoyer un fichier nommé document.txt vers le bucket “mes-donnees”, tapez :

Terminal window
s3cmd put document.txt s3://mes-donnees

Télécharger un Objet depuis un Bucket

Pour télécharger un fichier depuis un bucket S3 vers votre ordinateur, utilisez la commande get :

Terminal window
s3cmd get s3://NOM_DU_BUCKET/NOM_DU_FICHIER CHEMIN_LOCAL

Par exemple, pour télécharger un fichier appelé document.txt depuis le bucket “mes-donnees” vers votre répertoire courant, vous utiliseriez :

Terminal window
s3cmd get s3://mes-donnees/document.txt .

Supprimer un Objet d’un Bucket

Pour supprimer un fichier spécifique d’un bucket, utilisez la commande del :

Terminal window
s3cmd del s3://NOM_DU_BUCKET/NOM_DU_FICHIER

Par exemple, pour supprimer document.txt du bucket “mes-donnees”, vous taperiez :

Terminal window
s3cmd del s3://mes-donnees/document.txt

Suppression d’un Bucket

Pour supprimer un bucket qui n’est plus nécessaire, vous pouvez utiliser la commande rb (remove bucket) :

Terminal window
s3cmd rb s3://NOM_DU_BUCKET

Attention, un bucket ne peut être supprimé que s’il est vide. Si vous essayez de supprimer un bucket contenant des objets, la commande échouera.

Vider un Bucket

Pour vider un bucket de son contenu, vous pouvez utiliser une combinaison des commandes ls pour lister les objets et del pour les supprimer. Voici comment vous pouvez vider un bucket :

Terminal window
s3cmd del s3://NOM_DU_BUCKET/ --recursive

L’option --recursive permet de supprimer tous les objets et sous-dossiers dans le bucket spécifié.

Renommer un Bucket

Il n’est pas possible de renommer directement un bucket S3 à cause des contraintes imposées par l’API S3. Cependant, vous pouvez contourner cette limitation en créant un nouveau bucket avec le nouveau nom souhaité, puis en copiant tous les objets du bucket d’origine vers le nouveau bucket. Ensuite, supprimez l’ancien bucket.

Copier et Déplacer des Objets entre Buckets

La commande cp (copy) est utilisée pour copier des objets d’un bucket à un autre. Par exemple, pour copier un fichier appelé rapport.pdf du bucket “projets” vers “archives”, utilisez :

Terminal window
s3cmd cp s3://projets/rapport.pdf s3://archives/rapport.pdf

De même, pour déplacer un fichier, vous pouvez combiner les commandes cp et del pour simuler un déplacement.

Synchronisation des fichiers avec S3cmd

La synchronisation des fichiers est une fonctionnalité puissante de S3cmd qui vous permet de maintenir à jour un dossier local en le comparant avec le contenu d’un bucket S3 ou vice versa. Cette fonctionnalité est particulièrement utile pour les sauvegardes automatisées, les mises à jour de sites web hébergés sur S3, ou simplement pour garder une copie de secours de vos données.

Comprendre la commande sync

La commande principale pour la synchronisation dans S3cmd est s3cmd sync. Elle compare les fichiers d’un répertoire local avec ceux d’un bucket S3, puis copie uniquement les fichiers qui ont été modifiés ou qui n’existent pas encore dans la destination. Cette approche permet de gagner du temps et de la bande passante en évitant de retransférer des fichiers inchangés.

La syntaxe de base pour synchroniser un répertoire local avec un bucket S3 est la suivante :

Terminal window
s3cmd sync CHEMIN_LOCAL/ s3://NOM_DU_BUCKET/

Et pour synchroniser un bucket S3 avec un répertoire local :

Terminal window
s3cmd sync s3://NOM_DU_BUCKET/ CHEMIN_LOCAL/

Exemple de Synchronisation

Supposons que vous ayez un dossier local nommé “mon-site-web” que vous souhaitez synchroniser avec un bucket S3 appelé “site-web-backup”. Pour ce faire, vous utiliseriez la commande suivante :

Terminal window
s3cmd sync mon-site-web/ s3://site-web-backup/

Cette commande vérifiera tous les fichiers dans “mon-site-web” et ne transférera vers S3 que ceux qui ont été ajoutés ou modifiés depuis la dernière synchronisation.

Synchronisation bidirectionnelle

Il est également possible de synchroniser dans les deux sens, c’est-à-dire de télécharger les modifications de S3 vers votre répertoire local et d’envoyer les nouvelles modifications locales vers S3. Cela peut être fait en exécutant successivement les deux commandes de synchronisation :

Terminal window
s3cmd sync s3://site-web-backup/ mon-site-web/
s3cmd sync mon-site-web/ s3://site-web-backup/

Exclusions de fichiers

Lors de la synchronisation, il peut être utile d’exclure certains fichiers ou types de fichiers. Par exemple, pour exclure tous les fichiers .tmp lors de la synchronisation, vous pouvez utiliser l’option --exclude :

Terminal window
s3cmd sync mon-site-web/ s3://site-web-backup/ --exclude '*.tmp'

Cette option est particulièrement utile pour éviter de transférer des fichiers temporaires ou des fichiers de sauvegarde qui n’ont pas besoin d’être sauvegardés sur S3.

Suppression des fichiers obsolètes

La commande sync peut également être utilisée pour supprimer des fichiers du bucket S3 qui ne sont plus présents dans le répertoire local. Cela permet de garder le bucket S3 propre et en phase avec votre répertoire local. Pour activer cette fonctionnalité, vous devez ajouter l’option --delete-removed :

Terminal window
s3cmd sync mon-site-web/ s3://site-web-backup/ --delete-removed

Cette commande supprimera les fichiers dans “site-web-backup” qui ont été supprimés du répertoire “mon-site-web”.

Conclusion

En résumé, S3cmd est un outil puissant et flexible pour gérer vos buckets S3 et les objets qu’ils contiennent. Grâce à une gamme complète de commandes, vous pouvez facilement transférer des fichiers, synchroniser des dossiers, gérer les permissions, activer le versionnement, et bien plus encore. Ce guide a couvert les bases essentielles pour commencer à utiliser S3cmd de manière efficace.

Plus d’infos