Storage Space Optimization: Free Up Cloud Space
Optimize your storage space with deduplication, compression, and smart archival. Reclaim wasted space and reduce storage costs.
Cloud storage optimization typically reclaims 30-60% of a bill through four actions: deleting orphaned data, deduplicating identical objects, compressing text-heavy content, and tiering cold data to Glacier, Azure Archive, or B2. A 100 TB AWS bucket at $2,300/month often drops to $800/month after optimization without losing a single needed file. The work is mostly boring — inventory, analyze, apply lifecycle rules — but the savings compound monthly. Start with measurement, not with compression.
Audit Before You Cut
Run S3 Inventory, Azure Storage Analytics, or GCS bucket lock reports to produce a manifest of every object: key, size, last-modified date, storage class, and tags. Load it into Athena, BigQuery, or DuckDB and query.
Typical findings in an unoptimized bucket:
- 20-40% of objects haven't been accessed in over 90 days (candidates for cold tier)
- 5-15% are exact duplicates by SHA-256 hash
- 10-20% are orphaned — the application that created them is gone
- 30-50% are text/logs/JSON that compress 3:1 with zstd
You can't fix what you haven't measured. Budget a day for the initial audit and you'll know where to spend the next month of optimization.
Delete the Obvious Waste First
Before anything sophisticated, delete what shouldn't exist. Common offenders:
- Incomplete multipart uploads (S3 holds these until explicit abort, sometimes for years)
- Empty objects (zero bytes, but billed metadata)
- Log files older than the retention policy
- Temp files (
.tmp,~$*,*.bak,.DS_Store,Thumbs.db) - Test data from launched-but-forgotten experiments
Run aws s3api list-multipart-uploads and abort anything over 7 days old — a lifecycle rule with AbortIncompleteMultipartUpload automates this permanently. For S3, one rule:
Filter: prefix ""
AbortIncompleteMultipartUpload: DaysAfterInitiation: 7
Orphaned multiparts on petabyte buckets have been known to cost companies thousands monthly.
Deduplication: File-Level vs Block-Level
File-level dedup removes identical objects — same hash, same bytes. Tools like rdfind, fdupes, and jdupes scan directories and report duplicates. For cloud buckets, process the inventory CSV, group by SHA-256, and keep one canonical copy per hash. Replace duplicates with pointers (a small JSON file referencing the canonical key) or simply delete them if they're unreferenced.
Block-level dedup is what storage systems like ZFS, Btrfs, and purpose-built backup products (Veeam, Commvault, Rubrik) do. They chunk files into 4-128 KB blocks, hash each block, and store each unique hash once. A VM backup set might be 90% redundant at the block level, yielding 10:1 compression. This matters for backup buckets but rarely for general file storage.
Compression Strategy by File Type
Not every file compresses. A JPEG, MP4, or Zip is already compressed; running gzip against them wastes CPU and gains nothing. But text-heavy formats shrink dramatically:
- JSON logs: 80-90% reduction with gzip, 85-92% with zstd
- CSV exports: 75-85%
- .docx (already a zip): 5-10% (skip)
- .xlsx: 10-15% (skip)
- .pdf: 0-5% (skip — PDFs have internal compression)
- SQL dumps: 85-90%
Use zstd for modern pipelines — it decompresses 2-3x faster than gzip at similar ratios. For logs rotating to S3, a logrotate config with compress_program=zstd saves both bandwidth and storage. Never compress an already-compressed format; the 0.5% gain isn't worth the CPU time.
Tiering by Access Pattern
Hot data belongs on fast storage; cold data belongs on cheap storage. S3 Intelligent-Tiering automates this: after 30 days of no access, objects move to Infrequent Access ($0.0125/GB); after 90 days, Archive Instant; after 180, Deep Archive. The service charges $0.0025 per 1,000 objects monitored, so small files (under 128 KB) aren't worth the overhead.
For deterministic control, write explicit lifecycle rules:
- Day 30: Standard → Standard-IA
- Day 90: Standard-IA → Glacier Instant Retrieval
- Day 365: Glacier IR → Glacier Deep Archive
- Day 2555: Delete (unless tagged
legal-hold)
Rules apply to all new uploads automatically. A bucket with 100 TB evenly distributed across ages can save $1,500/month versus keeping everything in Standard.
Handling Small-File Overhead
Every cloud charges a minimum billable object size. S3 Standard-IA charges for 128 KB minimum even if the object is 4 KB; Glacier Instant Retrieval does the same; Glacier Flexible and Deep Archive have 40 KB per-object metadata charged at Standard-IA rates.
A bucket of 10 million 4 KB files in Standard-IA pays for 1.28 TB instead of 40 GB. Solution: pack small files into monthly TAR or ZIP archives before tiering. tar czf 2026-12-logs.tar.gz logs/2026-12/ gives you one object instead of thousands. Keep a parallel index (CSV of filename → offset) for retrieval.
Image and Video Optimization
Media often dominates storage. Convert legacy JPEGs to WebP (30% smaller) or AVIF (50% smaller) with cwebp or avifenc. For video, re-encode old H.264 MP4s to H.265 (HEVC) or AV1 — a 1 GB 1080p H.264 video becomes 400 MB in H.265 with no visible quality loss.
For image-heavy CMS sites, run a one-time batch conversion with imagemagick or ffmpeg, keep originals in Deep Archive, and serve the optimized versions. Tools like Cloudflare Images and AWS CloudFront's Image Optimizer generate variants on the fly, so you store one canonical copy and serve resized, re-encoded versions as requested.
Duplicate Detection Across Cloud Silos
Enterprise environments often have the same files scattered across OneDrive, Google Drive, Dropbox, and a company SharePoint. True optimization means finding cross-silo duplicates. Tools like Varonis, Egnyte, and rclone (with --track-renames and checksum compare) can hash files across providers and flag duplicates.
For ad-hoc consolidation — pulling the scattered copies of annual-report-2024.pdf into one canonical location — a dedicated transfer tool saves the round-trip through a laptop. HexaTransfer moves files up to 10 GB with AES-256-GCM encryption directly between people, so you can consolidate duplicates without uploading to yet another silo along the way.
Measure the Delta
After optimization, measure again. Storage Lens (AWS), Cost Management (Azure), or GCP's cost breakdown should show the reduction. If the bill didn't drop, something moved the wrong way — check for lifecycle rules that transitioned objects back to Standard (it happens), or unintended replication that tripled storage across regions.
Set a monthly reminder to review storage growth. A bucket growing 10% per month without obvious business reason is usually accumulating waste. Catching it early — the quarterly 2-hour ritual — beats a panicked optimization project after a $50,000 monthly surprise.
Try it at hexatransfer.com — free, no account, 10 GB max.
Send large files securely with end-to-end encryption
Transfer files up to 10 GB for free with end-to-end encryption. No account required. Your files are encrypted in your browser before upload — no one else can read them.
Send a file