Synchronisez un répertoire de rapports

AWSBeginner
Pratiquer maintenant

Introduction

Après avoir organisé des objets individuels, publiez une collection évolutive. Synchronisez les rapports quotidiens, distinguez le transfert incrémental d’un miroir et supprimez un rapport obsolète sans toucher à l’archive séparée.

Terminez d'abord Organisez les documents avec des clés et des métadonnées, notamment ses notions de compartiment, de clé, de préfixe et de téléchargement. Cette nouvelle VM fournit la connexion CLI, les rapports locaux et un compartiment contenant uniquement l'archive. Utilisez Terminal pour les commandes et AWS View en haut pour observer vos changements.

Lien avec les certifications

Certification Tâche d’examen Pratique
Cloud Practitioner (CLF-C02) Tâche 3.6 Synchronisation de répertoires et suppression ciblée dans S3.
Solutions Architect – Associate (SAA-C03) Tâche 3.1 Synchronisation de répertoires et suppression ciblée dans S3.
Developer – Associate (DVA-C02) Tâche 1.3 Synchronisation de répertoires et suppression ciblée dans S3.

Vue d’ensemble du laboratoire

Schéma conceptuel : les rapports locaux sont synchronisés vers le préfixe daily/ de S3 ; la mise en miroir ne modifie que ce préfixe et conserve l’objet distinct sous archive/.

Publiez le répertoire de rapports préparé

Dans cette étape, vous publierez deux rapports locaux vers le préfixe daily/ et comprendrez comment leurs noms de fichiers correspondent aux clés d'objet.

Rejoignez l'espace de travail avec cd (change directory, changer de répertoire) :

cd /home/labex/project

Examinez le répertoire de rapports préparé avec ls, qui liste ses noms de fichiers locaux :

ls reports

La liste contient monday.csv et tuesday.csv. Tous deux sont des fichiers CSV : un en-tête nomme les colonnes et des virgules séparent les valeurs de chaque enregistrement. Examinez le rapport du lundi avec cat, qui affiche le contenu d'un fichier :

cat reports/monday.csv
date,orders
2026-09-28,120

Listez le compartiment préparé. Pour un emplacement S3, --recursive affiche les clés complètes de tout le compartiment :

aws s3 ls s3://labex-report-delivery/ --recursive

Seul archive/retention.txt est présent. L'archive appartient à un processus distinct et doit être conservée pendant votre synchronisation quotidienne.

aws s3 sync prend une source et une destination, dans cet ordre. Il examine récursivement les fichiers du répertoire source ; vous n'avez pas besoin de --recursive pour sync. Chaque nom de fichier relatif devient une clé sous le préfixe de destination. reports/monday.csv devient donc daily/monday.csv, plutôt que daily/reports/monday.csv.

aws s3 sync reports/ s3://labex-report-delivery/daily/

La commande indique les chargements pour le lundi et le mardi ; leur ordre dans la sortie peut varier. Listez à nouveau tout le compartiment :

aws s3 ls s3://labex-report-delivery/ --recursive

Vous devriez trouver trois clés : archive/retention.txt, daily/monday.csv et daily/tuesday.csv. AWS View affiche les mêmes objets. Cliquez sur daily/monday.csv pour lire le rapport CSV stocké de deux lignes. L'archive reste en dehors de la destination daily/ sélectionnée.

Synchronisez une modification et un nouveau rapport

Dans cette étape, vous mettrez à jour un rapport, en ajouterez un autre et transférerez ces changements sans recharger un rapport inchangé.

Exécuter sync avec la même source et la même destination est sans risque lorsque ni l'une ni l'autre n'a changé :

aws s3 sync reports/ s3://labex-report-delivery/daily/

Aucune ligne de chargement n'apparaît lorsque les fichiers existants sont déjà à jour. Pour les transferts locaux vers S3, la CLI examine si la clé de destination manque, si les tailles diffèrent ou si le fichier local a une date de modification plus récente. Elle ne surveille pas continuellement le répertoire : vous exécutez sync lorsque vous souhaitez publier des changements.

Ajoutez au rapport du lundi un lot tardif de 25 commandes. printf affiche le texte entre guillemets ; \n termine la ligne. L'opérateur >> du shell ajoute du contenu à un fichier local au lieu de le remplacer :

printf '2026-09-28,25\n' >> reports/monday.csv

Examinez le résultat de trois lignes :

cat reports/monday.csv
date,orders
2026-09-28,120
2026-09-28,25

Créez le rapport du mercredi. Ici, > écrit un nouveau fichier, remplaçant tout contenu existant à ce chemin :

printf 'date,orders\n2026-09-30,150\n' > reports/wednesday.csv

Avant la publication, le rapport du lundi stocké contient toujours deux lignes et le mercredi est absent d'AWS View. Modifier uniquement les fichiers locaux ne change pas S3.

Publiez à nouveau :

aws s3 sync reports/ s3://labex-report-delivery/daily/

Vous devriez voir les chargements du rapport du lundi modifié et du nouveau rapport du mercredi. Le mardi est inchangé et n'est donc pas chargé. C'est un transfert incrémental : il copie les changements plutôt que de recopier systématiquement tous les fichiers.

Dans AWS View, le lundi affiche maintenant le lot tardif et le mercredi apparaît. Téléchargez le lundi vers un chemin local distinct pour comparer le contenu réellement stocké :

aws s3 cp s3://labex-report-delivery/daily/monday.csv retrieved-monday.csv

cmp compare les fichiers octet par octet. Il se termine avec succès sans afficher de différences lorsque les contenus correspondent. && affiche le message uniquement après cette comparaison réussie :

cmp reports/monday.csv retrieved-monday.csv && echo 'Updated report matches'
Updated report matches

Cela confirme que la mise à jour a atteint le stockage ; un simple message de commande réussie ne vous indiquerait pas quels octets ont été stockés.

Répertoire de rapports mis à jour et archive conservée — L'exemple ci-dessous montre le rapport du lundi stocké, développé après la mise à jour. Le mercredi est présent et l'archive distincte reste dans le compartiment :

Mettez en miroir uniquement le préfixe quotidien

Dans cette étape, vous supprimerez un rapport obsolète à la destination en protégeant l'archive sans rapport avec cette opération.

La destination de sync est daily/ ; archive/ reste en dehors de ce périmètre.

Périmètre du préfixe de synchronisation

Le rapport du mardi ne fait plus partie de la collection quotidienne publiée. Supprimez uniquement ce fichier local avec rm (remove). C'est une commande du système de fichiers local ; elle ne supprime donc pas d'objet S3 :

rm reports/tuesday.csv

Relancez une synchronisation ordinaire :

aws s3 sync reports/ s3://labex-report-delivery/daily/

Listez le préfixe de destination :

aws s3 ls s3://labex-report-delivery/daily/ --recursive

Le mardi apparaît toujours. Par défaut, sync copie les fichiers manquants ou mis à jour, mais laisse les objets supplémentaires à la destination. Supprimer un fichier source seul ne supprime pas sa copie stockée.

Un miroir maintient l'ensemble de fichiers de la destination aligné sur la source, suppressions comprises. --delete supprime les clés de destination sans fichier source correspondant. Combinez-le d'abord avec --dryrun, qui affiche les opérations prévues sans les exécuter :

aws s3 sync reports/ s3://labex-report-delivery/daily/ --delete --dryrun

L'essai à blanc devrait lister uniquement la suppression de daily/tuesday.csv. Le lundi et le mercredi correspondent à la source, et archive/retention.txt est en dehors de daily/. Gardez le préfixe de destination exact : utiliser la racine du compartiment inclurait l'archive dans le périmètre.

Après avoir vérifié la suppression prévue, exécutez la même opération sans --dryrun :

aws s3 sync reports/ s3://labex-report-delivery/daily/ --delete

La commande indique la suppression du mardi. Examinez tout le compartiment pour vérifier à la fois ce qui a disparu et ce qui a été conservé :

aws s3 ls s3://labex-report-delivery/ --recursive

Les clés restantes sont daily/monday.csv, daily/wednesday.csv et archive/retention.txt. Dans AWS View, ouvrez l'objet d'archive et confirmez qu'il affiche toujours Keep the archive outside daily synchronization. Votre opération de mise en miroir a affecté uniquement le préfixe choisi.

Résumé

Vous avez publié un répertoire évolutif avec sync, vérifié la mise à jour stockée et prévisualisé le miroir avant --delete. La collection finale daily/ contient les rapports de lundi et mercredi ; l’archive séparée reste intacte. Choisissez le sens du transfert et la portée de la destination avant de publier.

Pour approfondir ce sujet, consultez la documentation AWS : Sélection des transferts, aperçu et périmètre de suppression de S3 sync.