← Blog
Deux plaques en céramique verte et crème, superposées et ornées d’inserts corail identiques, sur fond lavande pâle.
Publié le
2026-11-09

AWS S3 cp : copier des fichiers et vérifier les transferts

aws s3 cp envoie un fichier local vers Amazon S3, télécharge un objet ou copie un objet entre deux emplacements S3. Commencez par un petit fichier et des chemins source et destination explicites. Vous pourrez ainsi repérer une clé incorrecte, un écrasement inattendu ou un droit manquant avant un transfert plus large.

Ce guide utilise AWS CLI v2 et des buckets Amazon S3 à usage général. Il présente un envoi, un téléchargement et une copie entre buckets, puis l’envoi filtré d’un répertoire. Les options et le comportement peuvent différer chez d’autres fournisseurs compatibles S3.

Choisir cp pour une copie explicite

Utilisez cp lorsque vous avez choisi le fichier ou l’ensemble de fichiers à transférer. Pour des mises à jour régulières fondées sur une comparaison entre la source et la destination, consultez notre guide AWS S3 sync. Aucune de ces commandes ne remplace un plan de récupération.

L’ordre de base est aws s3 cp SOURCE DESTINATION. Pour un objet unique, une destination terminée par / conserve le nom du fichier source ; une clé complète permet de choisir un autre nom. AWS détaille ces règles de chemins et de filtres. Les exemples ci-dessous indiquent des noms complets pour rendre le résultat attendu explicite.

Préparer un petit transfert

Vérifiez la version installée et les options disponibles :

aws --version
aws s3 cp help

La référence actuelle de cp, consultée le 9 novembre 2026, comprend --no-overwrite. Vérifiez sa présence dans votre aide locale avant d’utiliser ces exemples. Sinon, mettez la CLI à jour ; ne retirez pas cette protection sans examiner les fichiers déjà présents à destination.

Utilisez un profil configuré nommé transfer-check, ou remplacez-le par le vôtre. Remplacez les deux noms de buckets de démonstration et les régions par vos ressources de test. Créez un petit fichier sample.csv sans données sensibles dans votre répertoire de travail, ainsi qu’un répertoire local vide nommé download-check. Utilisez un nouveau préfixe S3 à chaque essai pour éviter de confondre un ancien fichier avec un nouveau résultat.

L’identité utilisée doit être autorisée à effectuer les opérations nécessaires, notamment lire la source et écrire à destination. Le chiffrement peut imposer des droits sur les clés. Confirmez le compte et les ressources visés avant de transférer des données réelles. Les requêtes, la récupération, le stockage et les transferts peuvent entraîner des frais.

Envoyer un fichier et vérifier sa destination

Prévisualisez d’abord la copie du fichier local vers S3 :

aws s3 cp ./sample.csv s3://amzn-s3-demo-reports/cp-check/sample.csv --profile transfer-check --region eu-west-1 --no-overwrite --dryrun

Vérifiez que l’aperçu indique cp-check/sample.csv dans le bucket prévu. Une simulation n’effectue pas le transfert et ne prouve donc pas que l’écriture réussira. Lorsque les chemins sont corrects, exécutez la même commande sans --dryrun :

aws s3 cp ./sample.csv s3://amzn-s3-demo-reports/cp-check/sample.csv --profile transfer-check --region eu-west-1 --no-overwrite

Le guide AWS des commandes S3 de haut niveau décrit cette forme de transfert. Conservez le fichier original jusqu’à la vérification de l’objet stocké et d’une copie téléchargée. Si la destination existe déjà, examinez ce résultat au lieu de supposer que cette exécution a envoyé de nouvelles données.

Télécharger vers un nouveau chemin local

aws s3 cp s3://amzn-s3-demo-reports/cp-check/sample.csv ./download-check/sample.csv --profile transfer-check --region eu-west-1 --no-overwrite --checksum-mode ENABLED

La cible est le fichier situé dans le répertoire vide préparé précédemment. --no-overwrite ignore une destination existante ; choisissez un autre chemin libre pour une nouvelle vérification. Lorsque le mode de somme de contrôle est activé, la CLI vérifie celle de l’objet si elle est disponible. La FAQ AWS sur les sommes de contrôle décrit cette validation. Une commande réussie sans somme de contrôle disponible ne prouve pas que cette validation a eu lieu.

Pour ce petit fichier de test, comparez les octets téléchargés à l’original comme indiqué plus bas. Ne téléchargez pas par-dessus le fichier qui doit servir de référence.

Copier un objet entre deux buckets S3

Après avoir vérifié le premier envoi, cet exemple copie l’objet dans un autre bucket de test :

aws s3 cp s3://amzn-s3-demo-reports/cp-check/sample.csv s3://amzn-s3-demo-archive/cp-check/sample.csv --source-region eu-west-1 --region eu-west-2 --profile transfer-check --copy-props default --no-overwrite

Le bucket source se trouve ici dans eu-west-1 et la destination dans eu-west-2. --source-region indique la région source ; --region indique la destination. --copy-props default conserve les propriétés de métadonnées prises en charge et les tags, avec d’éventuels appels API supplémentaires.

Cette opération crée une copie à destination et laisse la source en place. Elle ne reproduit pas les contrôles d’accès ni la configuration du bucket. La documentation AWS sur la copie d’objets explique le chiffrement à destination et les frais de transfert entre régions. Examinez les réglages de destination plutôt que de supposer qu’ils correspondent à ceux de la source.

Prévisualiser l’envoi filtré d’un répertoire

Placez dans exports/ uniquement les fichiers prévus pour le test. Cet exemple sélectionne les CSV tout en excluant l’arborescence private/ :

aws s3 cp ./exports/ s3://amzn-s3-demo-reports/cp-check/exports/ --recursive --exclude "*" --include "*.csv" --exclude "private/*" --no-follow-symlinks --no-overwrite --profile transfer-check --region eu-west-1 --dryrun

L’ordre des filtres compte : excluez tout, incluez les CSV, puis excluez l’arborescence privée. La dernière règle correspondante l’emporte. Un filtre d’inclusion seul ne réduit pas la sélection initiale. Gardez les motifs entre guillemets pour que le shell les transmette à la CLI.

Vérifiez chaque destination proposée avant de retirer --dryrun. Par exemple, exports/monthly/report.csv doit devenir cp-check/exports/monthly/report.csv ; exports/private/payroll.csv doit être exclu. Le répertoire source lui-même n’ajoute pas de niveau à la destination.

--no-follow-symlinks évite l’envoi de fichiers accessibles par des liens symboliques locaux. Gardez également les fichiers sans rapport hors du répertoire de test. Pour les gros transferts, notre guide de l’envoi multipart explique les parties et leur nettoyage. La CLI de haut niveau gère automatiquement le multipart si nécessaire, mais une commande échouée ne constitue pas une session persistante que l’on peut reprendre.

Choisir le comportement en cas d’écrasement

Les exemples ignorent les destinations existantes. Cela ne vérifie pas leur contenu : un ancien objet peut avoir le bon nom et des octets différents. Déterminez si chaque procédure doit créer une nouvelle clé, conserver un fichier existant ou le remplacer volontairement.

Pour une application avec plusieurs écritures concurrentes, utilisez une opération API avec la précondition d’écriture conditionnelle adaptée. Une vérification d’existence suivie d’une écriture séparée ne constitue pas une garantie atomique.

La gestion des versions S3 peut conserver les versions précédentes lorsqu’une nouvelle écriture utilise la même clé. Elle n’empêche pas la version courante de changer, et les anciennes versions occupent du stockage. Notre guide de récupération des versions explique comment retrouver un objet antérieur.

Vérifier le résultat, pas seulement la progression

Lisez immédiatement le code de sortie : echo $? dans Bash ou $LASTEXITCODE dans PowerShell. La référence AWS des codes de retour distingue réussite, échec de transfert, fichiers ignorés et erreurs d’analyse de commande. Un code zéro après une simulation reste uniquement un résultat de prévisualisation.

Examinez le premier objet envoyé :

aws s3api head-object --bucket amzn-s3-demo-reports --key cp-check/sample.csv --profile transfer-check --region eu-west-1

HeadObject renvoie les métadonnées sans le contenu. Comparez ContentLength à la taille du fichier source et vérifiez le type de contenu, les informations de chiffrement et l’identifiant de version, lorsqu’il existe. Pour la copie entre buckets, remplacez le bucket et la région par ceux de destination. Des tailles égales ne suffisent pas à établir que les contenus sont identiques.

Comparez l’original et le fichier de test téléchargé avec un outil SHA-256 local. Sous Linux, si sha256sum est installé :

sha256sum ./sample.csv ./download-check/sample.csv

Dans PowerShell :

Get-FileHash -Algorithm SHA256 ./sample.csv, ./download-check/sample.csv

Les deux empreintes doivent correspondre. Ces commandes comparent des fichiers locaux après le téléchargement. Ne comparez pas directement leur résultat à un ETag S3 : AWS décrit les cas où l’ETag n’est pas l’empreinte MD5 de l’objet, notamment les envois multipart. Les sommes de contrôle diffèrent aussi par leur algorithme, leur encodage et leur forme complète ou composite.

Si le transfert échoue, conservez la commande exacte, l’opération, le code d’erreur et l’identifiant de requête, sans les secrets. Vérifiez l’authentification et les droits sur la source et la destination avant de modifier les politiques. Un premier essai utile aboutit à une destination connue, des métadonnées contrôlées et un petit téléchargement vérifié. Passez à l’ensemble des données une fois ces contrôles réussis.

Votre prochaine charge de travail sur Hivenet.

Choisissez une charge de travail d’IA, de calcul ou de stockage à tester sur Hivenet, ou échangez avec notre équipe sur sa mise en production.