164 votes

Télécharger un dossier avec des sous-dossiers à l'aide de S3 et de la console AWS

Lorsque j'essaie de télécharger un dossier avec des sous-dossiers vers S3 via la console AWS, seuls les fichiers sont téléchargés, pas les sous-dossiers.

Vous ne pouvez pas non plus sélectionner un dossier. Il faut toujours ouvrir le dossier avant de pouvoir sélectionner quoi que ce soit.

Est-ce que c'est possible ?

5voto

Loser Points 354

J'avais du mal à trouver l'outil d'uploader amélioré pour uploader un dossier et ses sous-dossiers dans S3. Mais plutôt que de trouver un outil, je pouvais télécharger les dossiers et les sous-dossiers qu'ils contiennent en les faisant simplement glisser et en les déposant dans le seau S3.

Remarque : Cette fonction de glisser-déposer ne fonctionne pas dans Safari . Je l'ai testé dans Chrome et il fonctionne parfaitement.

Drag and drop

Après avoir glissé et déposé les fichiers et les dossiers, cet écran s'ouvre enfin pour télécharger le contenu.

enter image description here

4voto

Muhammad Numan Points 71

Solution 1 :

var AWS = require('aws-sdk');
var path = require("path");
var fs = require('fs');

const uploadDir = function(s3Path, bucketName) {

    let s3 = new AWS.S3({
    accessKeyId: process.env.S3_ACCESS_KEY,
    secretAccessKey: process.env.S3_SECRET_KEY
    });

    function walkSync(currentDirPath, callback) {
        fs.readdirSync(currentDirPath).forEach(function (name) {
            var filePath = path.join(currentDirPath, name);
            var stat = fs.statSync(filePath);
            if (stat.isFile()) {
                callback(filePath, stat);
            } else if (stat.isDirectory()) {
                walkSync(filePath, callback);
            }
        });
    }

    walkSync(s3Path, function(filePath, stat) {
        let bucketPath = filePath.substring(s3Path.length+1);
        let params = {Bucket: bucketName, Key: bucketPath, Body: fs.readFileSync(filePath) };
        s3.putObject(params, function(err, data) {
            if (err) {
                console.log(err)
            } else {
                console.log('Successfully uploaded '+ bucketPath +' to ' + bucketName);
            }
        });

    });
};

uploadDir("path to your folder", "your bucket name");

Solution 2 :

aws s3 cp SOURCE_DIR s3://DEST_BUCKET/ --recursive

1voto

cloudberryman Points 1760

Envisagez d'utiliser Logiciel gratuit CloudBerry Explorer pour télécharger la structure complète du dossier sur Amazon S3.

0voto

Scott Points 8090

Vous ne pouvez pas télécharger des structures imbriquées de ce type via l'outil en ligne. Je vous recommande d'utiliser quelque chose comme Explorateur de seaux pour les téléchargements plus complexes.

0voto

SGouws Points 51

Il est utile de mentionner que si vous utilisez simplement S3 pour les sauvegardes, vous devriez simplement compresser le dossier et le télécharger. Cela vous permettra d'économiser du temps et des coûts de téléchargement.

Si vous n'êtes pas sûr de savoir comment faire une fermeture éclair efficace à partir du terminal, jetez un coup d'œil à ce qui suit ici pour OSX.

Et $ zip -r archive_name.zip folder_to_compress pour Windows. Vous pouvez également utiliser un client tel que 7-Zip serait suffisant pour les utilisateurs de Windows

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X