Aller au contenu
Cloud medium

Gérer vous buckets S3 avec s3cmd

11 min de lecture

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.

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.

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 :

Fenêtre de terminal
sudo apt-get install s3cmd

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

Fenêtre de terminal
sudo yum install s3cmd

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

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 :

Fenêtre de terminal
brew install s3cmd

Cela téléchargera et installera S3cmd automatiquement.

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 :

Fenêtre de terminal
pip install s3cmd

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

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

Fenêtre de terminal
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.

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 :

Fenêtre de terminal
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.

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.

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

Fenêtre de terminal
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 :

Fenêtre de terminal
s3cmd mb s3://mes-donnees

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

Fenêtre de terminal
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.

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

Fenêtre de terminal
s3cmd ls s3://NOM_DU_BUCKET

Par exemple :

Fenêtre de terminal
s3cmd ls s3://mes-donnees

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

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

Fenêtre de terminal
s3cmd put MON_FICHIER s3://NOM_DU_BUCKET

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

Fenêtre de terminal
s3cmd put document.txt s3://mes-donnees

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

Fenêtre de terminal
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 :

Fenêtre de terminal
s3cmd get s3://mes-donnees/document.txt .

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

Fenêtre de terminal
s3cmd del s3://NOM_DU_BUCKET/NOM_DU_FICHIER

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

Fenêtre de terminal
s3cmd del s3://mes-donnees/document.txt

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

Fenêtre de terminal
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.

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 :

Fenêtre de terminal
s3cmd del s3://NOM_DU_BUCKET/ --recursive

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

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.

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 :

Fenêtre de terminal
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.

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.

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 :

Fenêtre de terminal
s3cmd sync CHEMIN_LOCAL/ s3://NOM_DU_BUCKET/

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

Fenêtre de terminal
s3cmd sync s3://NOM_DU_BUCKET/ CHEMIN_LOCAL/

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 :

Fenêtre de terminal
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.

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 :

Fenêtre de terminal
s3cmd sync s3://site-web-backup/ mon-site-web/
s3cmd sync mon-site-web/ s3://site-web-backup/

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 :

Fenêtre de terminal
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.

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 :

Fenêtre de terminal
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”.

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.