scripts/list_s3_sizes.ts
Rama main · réplica de lectura del repositorio original.
import { S3Client } from 'https://deno.land/x/s3_lite_client@0.7.0/mod.ts'
const folderToList = 'orgs'
if (!folderToList) {
console.error('Please provide a folder path as argument')
Deno.exit(1)
}
const s3client = new S3Client({
endPoint: '****.r2.cloudflarestorage.com',
useSSL: true,
region: 'auto',
accessKey: '****',
secretKey: '****',
bucket: 'backuptmp',
})
function formatBytes(bytes: number): string {
if (bytes === 0)
return '0 Bytes'
const k = 1024
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']
const i = Math.floor(Math.log(bytes) / Math.log(k))
return `${Number.parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`
}
async function listFolderSizes() {
console.log(`Listing objects in folder: ${folderToList}`)
let totalSize = 0
let fileCount = 0
try {
for await (const obj of s3client.listObjects({ prefix: folderToList })) {
const size = obj.size ?? 0
totalSize += size
fileCount++
console.log(`${obj.key}: ${formatBytes(size)}`)
}
console.log('\nSummary:')
console.log(`Total files: ${fileCount}`)
console.log(`Total size: ${formatBytes(totalSize)}`)
}
catch (error: unknown) {
console.error('Error listing files:', error)
Deno.exit(1)
}
}
await listFolderSizes()