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 :
Si vous utilisez une distribution basée sur Red Hat, utilisez plutôt yum :
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 :
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 :
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 :
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 :
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 :
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 :
Cette commande crée un nouveau bucket nommé NOM_DU_BUCKET. Par exemple, pour créer un bucket appelé “mes-donnees”, vous saisiriez :
Lister les Buckets
Pour vérifier quels buckets existent déjà sur votre compte, utilisez la commande :
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 :
Par exemple :
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
:
Par exemple, pour envoyer un fichier nommé document.txt
vers le bucket
“mes-donnees”, tapez :
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
:
Par exemple, pour télécharger un fichier appelé document.txt
depuis le
bucket “mes-donnees” vers votre répertoire courant, vous utiliseriez :
Supprimer un Objet d’un Bucket
Pour supprimer un fichier spécifique d’un bucket, utilisez la commande del
:
Par exemple, pour supprimer document.txt
du bucket “mes-donnees”, vous
taperiez :
Suppression d’un Bucket
Pour supprimer un bucket qui n’est plus nécessaire, vous pouvez utiliser la
commande rb
(remove 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 :
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 :
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 :
Et pour synchroniser un bucket S3 avec un répertoire 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 :
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 :
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
:
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
:
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.