S3cmd est un outil en ligne de commande pour transférer, synchroniser et gérer vos données sur Amazon S3 et tout stockage compatible (MinIO, Outscale OOS, Scaleway, DigitalOcean Spaces…). Avec une seule commande, vous pouvez uploader des fichiers, synchroniser des dossiers, gérer les ACL et automatiser vos sauvegardes.
Principales fonctionnalités :
put/get: transférer des fichiers vers/depuis S3sync: synchroniser un dossier local avec un bucket (incrémental)mb/rb: créer et supprimer des bucketsls: lister buckets et objetscp/mv/del: copier, déplacer, supprimer des objets
Installation
Section intitulée « Installation »Via pip (recommandé pour avoir la dernière version) :
pip install s3cmd==2.4.0Ou via le gestionnaire de paquets (version potentiellement plus ancienne) :
# Debian/Ubuntusudo apt install s3cmd
# Fedora/RHELsudo dnf install s3cmdAvec Homebrew :
brew install s3cmdAvec Python et pip installés :
pip install s3cmd==2.4.0Vérifiez l’installation :
s3cmd --versions3cmd version 2.4.0Environnement de test avec MinIO
Section intitulée « Environnement de test avec MinIO »Pour tester les commandes de ce guide sans frais, déployons MinIO (stockage S3-compatible) sur minikube. Vous pourrez ensuite adapter la configuration à votre provider (AWS S3, Outscale, Scaleway…).
-
Démarrez minikube (si ce n’est pas déjà fait) :
Fenêtre de terminal minikube start -
Déployez MinIO :
Fenêtre de terminal minikube kubectl -- create namespace miniominikube kubectl -- run minio --image=minio/minio:RELEASE.2025-01-20T14-49-07Z -n minio \--env="MINIO_ROOT_USER=minioadmin" \--env="MINIO_ROOT_PASSWORD=minioadmin" \-- server /data --console-address ":9001" -
Exposez le service :
Fenêtre de terminal minikube kubectl -- expose pod minio -n minio \--port=9000 --target-port=9000 --type=NodePort --name=minio-api -
Récupérez l’URL d’accès :
Fenêtre de terminal echo "http://$(minikube ip):$(minikube kubectl -- get svc minio-api -n minio -o jsonpath='{.spec.ports[0].nodePort}')"Exemple de sortie http://192.168.49.2:31019
Configuration
Section intitulée « Configuration »Configuration interactive
Section intitulée « Configuration interactive »Lancez l’assistant de configuration :
s3cmd --configureL’assistant vous demande :
- Access Key : votre clé d’accès (ex:
minioadminpour MinIO) - Secret Key : votre clé secrète
- Default Region : région par défaut (ex:
us-east-1) - S3 Endpoint : URL du service S3 (ex:
192.168.49.2:31019pour MinIO)
Configuration manuelle
Section intitulée « Configuration manuelle »Pour MinIO ou un stockage compatible, créez directement le fichier ~/.s3cfg :
[default]access_key = minioadminsecret_key = minioadminhost_base = 192.168.49.2:31019host_bucket = 192.168.49.2:31019use_https = Falsesignature_v2 = TrueConfiguration pour Outscale OOS
Section intitulée « Configuration pour Outscale OOS »Pour Outscale Object Storage :
[default]access_key = VOTRE_ACCESS_KEYsecret_key = VOTRE_SECRET_KEYhost_base = oos.eu-west-2.outscale.comhost_bucket = %(bucket)s.oos.eu-west-2.outscale.comuse_https = Truesignature_v2 = Falsewebsite_endpoint = https://%(bucket)s.oos-website.eu-west-2.outscale.com/Gestion des buckets
Section intitulée « Gestion des buckets »Créer un bucket
Section intitulée « Créer un bucket »s3cmd mb s3://mon-bucketBucket 's3://mon-bucket/' createdLister les buckets
Section intitulée « Lister les buckets »s3cmd ls2026-01-23 14:18 s3://mon-bucket2026-01-23 13:39 s3://autre-bucketInformations sur un bucket
Section intitulée « Informations sur un bucket »s3cmd info s3://mon-buckets3://mon-bucket/ (bucket): Location: us-east-1 Payer: BucketOwner Versioning:none Expiration rule: none Policy: none CORS: none ACL: CanonicalUser: FULL_CONTROLSupprimer un bucket
Section intitulée « Supprimer un bucket »# Le bucket doit être vides3cmd rb s3://mon-bucketBucket 's3://mon-bucket/' removedTransfert de fichiers
Section intitulée « Transfert de fichiers »Uploader un fichier
Section intitulée « Uploader un fichier »s3cmd put rapport.txt s3://mon-bucket/upload: 'rapport.txt' -> 's3://mon-bucket/rapport.txt' [1 of 1] 29 of 29 100% in 0s 6.47 KB/s doneUploader plusieurs fichiers
Section intitulée « Uploader plusieurs fichiers »s3cmd put *.pdf s3://mon-bucket/documents/Uploader un dossier complet
Section intitulée « Uploader un dossier complet »s3cmd put --recursive mon-dossier/ s3://mon-bucket/backup/Télécharger un fichier
Section intitulée « Télécharger un fichier »s3cmd get s3://mon-bucket/rapport.txt ./download: 's3://mon-bucket/rapport.txt' -> './rapport.txt' [1 of 1] 29 of 29 100% in 0s 32.93 KB/s doneTélécharger un dossier complet
Section intitulée « Télécharger un dossier complet »s3cmd get --recursive s3://mon-bucket/backup/ ./restore/Lister et explorer les objets
Section intitulée « Lister et explorer les objets »Lister le contenu d’un bucket
Section intitulée « Lister le contenu d’un bucket »s3cmd ls s3://mon-bucket/2026-01-23 14:19 25 s3://mon-bucket/documents/notes.md2026-01-23 14:19 29 s3://mon-bucket/documents/rapport.txtLister récursivement
Section intitulée « Lister récursivement »s3cmd ls -r s3://mon-bucket/2026-01-23 14:19 25 s3://mon-bucket/backup/documents/notes.md2026-01-23 14:19 29 s3://mon-bucket/backup/documents/rapport.txt2026-01-23 14:19 15 s3://mon-bucket/backup/photos/vacances.jpgAfficher l’espace utilisé
Section intitulée « Afficher l’espace utilisé »s3cmd du s3://mon-bucket/ 98 4 objects s3://mon-bucket/Copier, déplacer et supprimer
Section intitulée « Copier, déplacer et supprimer »Copier un objet
Section intitulée « Copier un objet »s3cmd cp s3://mon-bucket/rapport.txt s3://mon-bucket/archives/rapport.txtremote copy: 's3://mon-bucket/rapport.txt' -> 's3://mon-bucket/archives/rapport.txt' [1 of 1]Copier entre buckets
Section intitulée « Copier entre buckets »s3cmd cp s3://source-bucket/fichier.txt s3://dest-bucket/fichier.txtDéplacer un objet
Section intitulée « Déplacer un objet »s3cmd mv s3://mon-bucket/ancien.txt s3://mon-bucket/nouveau.txtSupprimer un objet
Section intitulée « Supprimer un objet »s3cmd del s3://mon-bucket/fichier.txtdelete: 's3://mon-bucket/fichier.txt'Vider un bucket
Section intitulée « Vider un bucket »s3cmd del s3://mon-bucket/ --recursive --forcedelete: 's3://mon-bucket/archives/rapport.txt'delete: 's3://mon-bucket/backup/documents/notes.md'delete: 's3://mon-bucket/backup/documents/rapport.txt'Synchronisation
Section intitulée « Synchronisation »La synchronisation est la fonctionnalité la plus puissante de s3cmd. Elle compare les fichiers et ne transfère que les modifications.
Synchroniser local vers S3
Section intitulée « Synchroniser local vers S3 »s3cmd sync mon-dossier/ s3://mon-bucket/backup/upload: 'mon-dossier/documents/notes.md' -> 's3://mon-bucket/backup/documents/notes.md' [1 of 3] 25 of 25 100% in 0s 4.36 KB/s doneupload: 'mon-dossier/documents/rapport.txt' -> 's3://mon-bucket/backup/documents/rapport.txt' [2 of 3] 29 of 29 100% in 0s 9.71 KB/s doneupload: 'mon-dossier/photos/vacances.jpg' -> 's3://mon-bucket/backup/photos/vacances.jpg' [3 of 3] 15 of 15 100% in 0s 5.25 KB/s doneDone. Uploaded 69 bytes in 1.0 seconds, 69.00 B/s.Synchroniser S3 vers local
Section intitulée « Synchroniser S3 vers local »s3cmd sync s3://mon-bucket/backup/ ./restore/download: 's3://mon-bucket/backup/documents/notes.md' -> './restore/documents/notes.md' [1 of 3] 25 of 25 100% in 0s 22.01 KB/s donedownload: 's3://mon-bucket/backup/documents/rapport.txt' -> './restore/documents/rapport.txt' [2 of 3] 29 of 29 100% in 0s 37.31 KB/s donedownload: 's3://mon-bucket/backup/photos/vacances.jpg' -> './restore/photos/vacances.jpg' [3 of 3] 15 of 15 100% in 0s 21.96 KB/s doneDone. Downloaded 69 bytes in 1.0 seconds, 69.00 B/s.Exclure des fichiers
Section intitulée « Exclure des fichiers »s3cmd sync mon-dossier/ s3://mon-bucket/backup/ --exclude '*.tmp' --exclude '*.log'Supprimer les fichiers obsolètes
Section intitulée « Supprimer les fichiers obsolètes »L’option --delete-removed supprime de la destination les fichiers qui n’existent plus dans la source :
s3cmd sync mon-dossier/ s3://mon-bucket/backup/ --delete-removedFonctionnalités avancées
Section intitulée « Fonctionnalités avancées »Activer le versioning (v2.4.0)
Section intitulée « Activer le versioning (v2.4.0) »s3cmd setversioning s3://mon-bucket enableGérer les tags (v2.4.0)
Section intitulée « Gérer les tags (v2.4.0) »# Ajouter des tagss3cmd settagging s3://mon-bucket/fichier.txt "projet=devops" "env=prod"
# Voir les tagss3cmd gettagging s3://mon-bucket/fichier.txt
# Supprimer les tagss3cmd deltagging s3://mon-bucket/fichier.txtGénérer une URL signée
Section intitulée « Générer une URL signée »s3cmd signurl s3://mon-bucket/fichier.txt +3600Cette commande génère une URL temporaire valide 1 heure (3600 secondes).
Définir les ACL
Section intitulée « Définir les ACL »# Rendre un objet publics3cmd setacl s3://mon-bucket/fichier.txt --acl-public
# Rendre privés3cmd setacl s3://mon-bucket/fichier.txt --acl-privateDépannage
Section intitulée « Dépannage »| Problème | Cause probable | Solution |
|---|---|---|
SignatureDoesNotMatch | Mauvaise signature | Essayez signature_v2 = True dans .s3cfg |
Name or service not known | host_bucket incorrect | Utilisez le même host que host_base pour MinIO |
Access Denied | Credentials incorrects | Vérifiez access_key et secret_key |
Bucket already exists | Nom de bucket pris | Choisissez un nom unique |
The bucket is not empty | Bucket non vide | Videz avec s3cmd del s3://bucket/ --recursive |
À retenir
Section intitulée « À retenir »- Un seul outil pour tout : s3cmd gère upload, download, sync, ACL, versioning.
- Synchronisation incrémentale : seuls les fichiers modifiés sont transférés.
- Compatible tout S3 : AWS, MinIO, Outscale, Scaleway, DigitalOcean…
--dry-runtoujours : prévisualisez les sync/delete avant de les exécuter.- Configuration par fichier :
~/.s3cfgévite de répéter les credentials.
Prochaines étapes
Section intitulée « Prochaines étapes »Ressources
Section intitulée « Ressources »- Site officiel : s3tools.org
- Documentation : s3tools.org/usage
- GitHub : github.com/s3tools/s3cmd