Skip to content

Instantly share code, notes, and snippets.

@freels
Forked from pgib/README.md
Last active March 15, 2025 16:13
Show Gist options
  • Save freels/aee52f94313dc714332ef5e433e89235 to your computer and use it in GitHub Desktop.
Save freels/aee52f94313dc714332ef5e433e89235 to your computer and use it in GitHub Desktop.
Clean up the bloated Backblaze bzfileids.dat
#!/usr/bin/env ruby
# Place in `/Library/Backblaze.bzpkg/bzdata/bzbackup`, and run with:
#
# ```
# ruby purge_bzfileids.rb
# ```
#
# It will process `bzfileids.dat` placing any file that exists in
# `bzfileids.dat-found` and any missing file in `bzfileids.dat-missing`. You can
# then back up your original file and replace it with `bzfileids.dat-found`.
#
# My original file was almost 1.4GB. It had grown so large that the backup would
# cause all my fans spin and it never seemed to complete. Backblaze support
# suggested I delete my entire backup with them and start over. After running
# this script, my new `bzfileids.dat` file is 301MB. Still huge, but about 1/5th
# the size. The backup seemed to go much more smoothly.
missing = File.open('./bzfileids.dat-missing', 'a+b')
found = File.open('./bzfileids.dat-found', 'a+b')
File.open('./bzfileids.dat').each_with_index do |line, index|
split = line.match(/^([a-z0-9_-]+)\s+(.+)$/)
if split
path = split[2]
if File.exist?(path)
found.puts line
else
missing.puts line
end
else
puts "#{index} Invalid line found: #{line}"
end
end
missing.close
found.close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment