Lorsque j'exécute la commande dans le terminal dos à dos, elle ne se synchronise pas la deuxième fois. Qui est genial! Ça ne devrait pas. Mais, si j'exécute mon processus de construction et exécute aws s3 sync
par programme, dos à dos, il synchronise tous les fichiers les deux fois, comme si mon processus de construction changeait quelque chose différemment la deuxième fois.
Je ne peux pas comprendre ce qui pourrait se passer. Des idées?
Mon processus de compilation est essentiellement pug source/ --out static-site/
et stylus -c styles/ --out static-site/styles/
3 réponses
Selon cela - http://docs.aws.amazon.com /cli/latest/reference/s3/sync.html
La synchronisation S3 compare la taille du fichier et le dernier horodatage modifié pour voir si un fichier doit être synchronisé.
Dans votre cas, je soupçonne que le système de construction entraîne un horodatage plus récent même si la taille du fichier n'a pas changé?
Cet article est un peu daté, mais je contribuerai néanmoins aux personnes qui arrivent ici via Google.
Je suis d'accord avec la réponse vérifiée. Pour ajouter un contexte supplémentaire, la fonctionnalité AWS S3 est différente de celle de Linux s3 standard de plusieurs manières. Sous Linux, un md5hash peut être calculé pour déterminer si un fichier a changé. S3 ne le fait pas, il ne peut donc déterminer qu'en fonction de la taille et / ou de l'horodatage. Pire encore, AWS ne conserve pas l'horodatage lors du transfert de toute façon, donc l'horodatage est ignoré lors de la synchronisation en local et utilisé uniquement lors de la synchronisation vers s3.
Un fichier local nécessitera un téléchargement si la taille du fichier local est différente de la taille de l'objet s3, la dernière heure de modification du fichier local est plus récente que la dernière heure de modification de l'objet s3, ou le fichier local n'existe pas sous le compartiment et le préfixe spécifiés.
--size-only (boolean) Fait de la taille de chaque clé le seul critère utilisé pour décider de la synchronisation de la source vers la destination.
Vous voulez l'option --size-only
qui ne regarde que la taille du fichier et non la date de la dernière modification. C'est parfait pour un système de création d'actifs qui changera fréquemment la date de dernière modification, mais pas le contenu réel des fichiers (je suis confronté à cela avec des builds Webpack où des choses comme les polices ont continué à se synchroniser même si le contenu du fichier était identique). Si vous n'utilisez pas une méthode de construction qui incorpore le hachage du contenu dans le nom de fichier, il peut être possible de rencontrer des problèmes (si la construction émet un fichier de même taille mais avec un contenu différent), alors faites attention à cela.
J'ai testé manuellement l'ajout d'un nouveau fichier qui n'était pas sur le bucket distant et il est en effet ajouté au bucket distant avec --size-only
.
Questions connexes
De nouvelles questions
node.js
Node.js est un runtime d'E / S asynchrone basé sur des événements, non bloquant qui utilise le moteur JavaScript V8 de Google et la bibliothèque libuv. Il est utilisé pour développer des applications qui font un usage intensif de la possibilité d'exécuter JavaScript à la fois sur le client et sur le serveur et bénéficient donc de la réutilisation du code et de l'absence de changement de contexte.