← Blog
Des feuilles vertes et orange forment un chemin entre deux dossiers crème sur un fond lavande clair.
Publié le
2026-10-29

AWS S3 sync : prévisualiser les transferts et vérifier les fichiers

aws s3 sync copie les fichiers nouveaux ou sélectionnés comme modifiés entre un répertoire local et un préfixe S3, ou entre deux emplacements S3. Chaque exécution travaille dans un seul sens. Commencez avec --dryrun, vérifiez la destination et traitez les suppressions séparément du premier transfert.

Il ne suffit pas que la commande se termine : les fichiers prévus doivent arriver au bon endroit, sans écraser ni supprimer des données utiles. Ce guide propose une vérification à petite échelle avec AWS CLI v2 et des compartiments S3 à usage général. Les noms de compartiment, profils, régions et chemins sont des exemples à remplacer.

Quand utiliser S3 sync

Utilisez sync pour transférer régulièrement un répertoire d’export, télécharger un jeu de données ou copier ponctuellement entre deux compartiments. La commande examine les deux côtés pour déterminer quels éléments copier. Elle ne surveille plus les changements une fois terminée.

aws s3 cp permet de copier explicitement un fichier ou un ensemble de fichiers de manière récursive. Sync ajoute des règles de comparaison pour éviter certains transferts inutiles. Aucune de ces commandes ne transforme le stockage objet en système de fichiers monté. Notre guide du stockage cloud Amazon distingue S3 du stockage de fichiers et par blocs.

Confirmer son identité et préparer un petit répertoire source

Utilisez un profil AWS déjà autorisé et vérifiez l’identité correspondante :

aws --version
aws sts get-caller-identity --profile storage-review

GetCallerIdentity indique le compte et l’utilisateur ou le rôle. Une réponse valide ne prouve pas que vous pouvez lire ou écrire dans le compartiment. Utilisez votre procédure habituelle de connexion ou de rôle, sans insérer d’identifiants secrets dans les commandes.

Préparez ./exports/ avec quelques fichiers non sensibles dont l’écriture est terminée. Choisissez un compartiment existant et un préfixe de test dédié, comme review/. Vérifiez qu’il est inutilisé avant de le considérer comme une zone vide. Ne commencez pas par tout votre répertoire personnel ou la racine d’un compartiment de production.

Les transferts courants nécessitent généralement de lister le compartiment concerné, puis de lire les objets sources ou d’écrire à destination. Suppression, chiffrement KMS, étiquettes et transferts multiparties peuvent demander d’autres permissions. Consultez la référence des permissions S3 selon les opérations effectuées, sans accorder un accès complet pour contourner une erreur.

Prévisualiser un envoi local, puis lancer le même transfert

Le répertoire local est ici la source et le préfixe S3 la destination :

aws s3 sync ./exports/ s3://amzn-s3-demo-bucket/review/ --profile storage-review --no-follow-symlinks --dryrun

Relisez toutes les opérations proposées pour ce petit test. Le fichier ./exports/reports/week.csv doit arriver sous la clé review/reports/week.csv. Le nom exports n’est pas ajouté automatiquement au préfixe. Pour sync, ajouter ou retirer une barre oblique finale ne change pas le traitement du contenu du répertoire. AWS explique les règles des chemins.

--dryrun affiche les opérations prévues sans effectuer le transfert. Il peut néanmoins contacter S3 pour lister les objets. Ce n’est ni un test complet des permissions ni un plan transactionnel verrouillé : données et autorisations peuvent changer avant l’exécution réelle. --no-follow-symlinks évite de suivre les liens symboliques dans l’arborescence locale à envoyer.

Après vérification de la source, de la destination et de la prévisualisation, retirez uniquement --dryrun :

aws s3 sync ./exports/ s3://amzn-s3-demo-bucket/review/ --profile storage-review --no-follow-symlinks

Cette commande peut écrire des objets et écraser les clés sélectionnées par les règles de comparaison, même sans --delete. Gardez la source stable pendant l’exécution. Si une application continue d’écrire, produisez d’abord un export terminé ou un instantané. Sync ne garantit pas, à lui seul, un jeu de données cohérent à un instant précis.

Télécharger ou copier entre compartiments

Pour télécharger, placez S3 en premier et choisissez un nouveau répertoire local :

aws s3 sync s3://amzn-s3-demo-bucket/review/ ./restore-review/ --profile storage-review --no-follow-symlinks --dryrun

Vérifiez le plan avant de retirer --dryrun. Des fichiers locaux peuvent aussi être écrasés. Sur un système de fichiers insensible à la casse, Report.csv et report.csv ne peuvent pas forcément coexister. Recherchez ces collisions avant de télécharger un jeu de données inconnu.

Pour deux compartiments AWS, choisissez des emplacements distincts. Ici, la source se trouve en Irlande et la destination à Francfort :

aws s3 sync s3://amzn-s3-demo-source/review/ s3://amzn-s3-demo-destination/review/ --profile storage-review --source-region eu-west-1 --region eu-central-1 --dryrun

Remplacez les régions par celles de vos compartiments. --source-region désigne la source ; --region désigne la destination. Ne faites pas pointer les deux côtés vers les mêmes objets. Consultez la référence de la commande sync pour les options de votre version.

Comprendre ce que signifie « modifié »

La comparaison par défaut tient compte de l’existence d’un élément, de sa taille et de ses dates de modification. Le traitement précis des dates dépend du sens du transfert. Elle ne compare pas intégralement chaque fichier, octet par octet, avec sa destination. Une taille identique ne prouve pas un contenu identique.

  • --size-only retire les dates de la comparaison. Une modification à taille égale peut passer inaperçue.
  • --exact-timestamps concerne les téléchargements S3 vers le disque local et impose une correspondance exacte des dates pour ignorer des fichiers de même taille.
  • La référence actuelle de CLI v2 inclut --no-overwrite, qui transfère uniquement les éléments absents de la destination. Consultez aws s3 sync help si votre installation ne reconnaît pas cette option.

Une seconde exécution sans opération indique que la comparaison n’a rien sélectionné. Ce n’est pas un audit d’intégrité. Une modification des seules métadonnées ne force pas non plus la recopie d’un élément autrement inchangé. Ne considérez pas une synchronisation ordinaire comme une réécriture générale des métadonnées.

Filtrer les fichiers avec précision

Pour prévisualiser uniquement les fichiers CSV, excluez tout, puis réincluez le motif souhaité :

aws s3 sync ./exports/ s3://amzn-s3-demo-bucket/review/ --profile storage-review --no-follow-symlinks --exclude "*" --include "*.csv" --dryrun

Les fichiers sont inclus par défaut : une règle d’inclusion seule ne réduit donc pas le transfert. Les dernières règles priment. Placez les motifs entre guillemets pour éviter leur interprétation préalable par le shell. Vérifiez les chemins imbriqués, la casse et les fichiers inattendus dans la prévisualisation. Une extension ne garantit rien sur la sensibilité du contenu d’un export.

Écarter --delete du premier transfert

--delete supprime les éléments de destination absents de la source, dans le périmètre et selon les filtres de l’opération. Inverser la commande inverse le côté exposé aux suppressions. Un répertoire source vide par erreur peut donc être dangereux.

Pour maintenir un miroir, examinez la suppression séparément. Cet exemple la prévisualise sans l’exécuter :

aws s3 sync ./exports/ s3://amzn-s3-demo-bucket/review/ --profile storage-review --no-follow-symlinks --delete --dryrun

Contrôlez chaque suppression proposée, confirmez que la source est complète et vérifiez la récupération avant d’autoriser l’opération réelle. Une prévisualisation d’envoi réussie ne suffit pas à justifier le retrait de --dryrun ici. Les éléments exclus échappent aussi à la suppression : les filtres modifient donc le résultat du miroir. Les exemples AWS illustrent cette différence selon le sens du transfert.

Dans un compartiment avec gestion des versions activée, une suppression ordinaire crée généralement un marqueur de suppression et un écrasement crée une nouvelle version. La récupération dépend des versions encore conservées et des permissions ; les règles de cycle de vie peuvent supprimer les anciennes versions. Vérifiez S3 Versioning avant de compter sur ce mécanisme. Il ne protège pas les fichiers locaux.

Vérifier la fin du transfert et un fichier téléchargé

Lisez les erreurs et récupérez le code de sortie immédiatement après le transfert. Dans un shell POSIX :

echo $?

Dans PowerShell :

$LASTEXITCODE

Zéro indique une réussite selon la commande. Pour S3, 1 indique un transfert en échec et 2 peut signaler des fichiers ignorés ; d’autres codes non nuls décrivent d’autres erreurs. Consultez la référence des codes de retour. Une tâche planifiée ne doit pas annoncer une réussite uniquement parce que certains objets sont arrivés.

AWS CLI assure une validation des sommes de contrôle pendant les transferts lorsqu’elle est prise en charge. Cela diffère de la sélection des éléments à transférer. Pour un contrôle distinct, téléchargez un échantillon dans un nouveau répertoire et conservez l’original inchangé. Ce script Python 3.11+ utilise le hachage de fichiers hashlib. Enregistrez-le sous compare_files.py :

import hashlib
import sys
from pathlib import Path

def digest(path):
    with path.open("rb") as source:
        return hashlib.file_digest(source, "sha256").hexdigest()

def main(args):
    if len(args) != 2:
        print("Usage: compare_files.py ORIGINAL DOWNLOADED", file=sys.stderr)
        return 2
    original, downloaded = map(Path, args)
    if original.resolve() == downloaded.resolve():
        print("Choose two different files.", file=sys.stderr)
        return 2
    try:
        match = digest(original) == digest(downloaded)
    except OSError as error:
        print(error, file=sys.stderr)
        return 2
    print("MATCH" if match else "MISMATCH")
    return 0 if match else 1

if __name__ == "__main__":
    raise SystemExit(main(sys.argv[1:]))
python compare_files.py ./exports/sample.csv ./restore-review/sample.csv

Une correspondance ne vérifie que ces deux fichiers. Elle ne prouve ni la présence de tous les objets attendus, ni l’égalité des métadonnées, ni la possibilité de restaurer une base de données. Pour une migration, rapprochez aussi la liste des clés attendues et testez l’application à destination avant de retirer la source.

Prévoir les coûts de parcours et la récupération

Sync peut lister un grand préfixe même si peu d’objets doivent être copiés. Tenez compte des requêtes, transferts, récupérations, du stockage de destination et des frais liés au chiffrement lorsqu’ils s’appliquent. Vérifiez régions et classes de stockage sur la page tarifaire S3. Une prévisualisation peut encore produire des requêtes de liste facturables ; elle n’est pas une garantie de gratuité.

Sync peut servir au transfert dans un plan de sauvegarde cloud, mais ne fournit à lui seul ni rétention indépendante ni restauration testée. Pour une réplication continue entre compartiments AWS, étudiez S3 Replication : une tâche sync planifiée n’a pas nécessairement le même comportement.

Pour un autre fournisseur compatible S3, vérifiez séparément le point de terminaison, les identifiants, les opérations disponibles et les sommes de contrôle. Ces exemples AWS n’établissent pas une équivalence fonctionnelle avec Hivenet ou un autre service.

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.