【问题标题】:Firebase storage - Download directory as ".zip"Firebase 存储 - 将目录下载为“.zip”
【发布时间】:2021-04-19 13:36:34
【问题描述】:

如果您使用 Firebase 存储,您可能会发现无法直接从 firebase UI 或使用 gcloud UI 下载文件夹(以 zip 格式)。因此,很难为您的firebase storage 存储桶创建备份,此外,如果您使用firestore,您可以将集合导出到firebase storage

【问题讨论】:

    标签: firebase firebase-storage


    【解决方案1】:

    我基于firebase-adminjszip 创建了一个nodejs 脚本,带有两个参数:首先下载firebase storage 中的path,其次是存储zip 文件的路径

    package.json:

    {
      "dependencies": {
        "firebase-admin": "^9.6.0",
        "jszip": "^3.6.0"
      }
    }
    

    index.js:

    const fs = require("fs");
    const JSZip = require('jszip');
    const admin = require('firebase-admin');
    
    const serviceAccount = require("./service-account-key.json");
    
    async function main (){
        try{
            admin.initializeApp({
                credential: admin.credential.cert(serviceAccount),
                storageBucket: "stackd-56e96.appspot.com",
            });
            const bucket = admin.storage().bucket();
    
            const src_storage_path = process.argv[2];
            let dest_storage_path = process.argv[3];
    
            if(dest_storage_path.includes(":"))
                dest_storage_path = dest_storage_path.replace(":", "_")
    
            const jszip = new JSZip();
            const files = (await bucket.getFiles({
                prefix: `${src_storage_path}/`
            }))[0]
    
            const filesContent = await Promise.all(
                files.map(file => file.download())
            );
    
            filesContent.forEach((content, i) => {
                jszip.file(files[i].name, content[0])
            });
    
            const content = await jszip.generateAsync({ type: 'nodebuffer' });
    
            await fs.promises.writeFile(dest_storage_path, content)
        } catch (error){
            console.error(error)
        }
    }
    
    main();
    

    命令行示例:

    node index.js 2021-04-16T11:47:46_54052 backup.zip

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 2019-09-29
      • 2021-08-21
      • 2021-02-13
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      相关资源
      最近更新 更多