Skip to content

Instantly share code, notes, and snippets.

@mindreframer
Created August 12, 2012 20:26
Show Gist options
  • Save mindreframer/3334211 to your computer and use it in GitHub Desktop.
Save mindreframer/3334211 to your computer and use it in GitHub Desktop.
Restore deleted zeroed (deleted) files in Dropbox
## gem install dropbox-api
##### Dropbox
require 'dropbox-api'
## for client config:
## create Rakefile
>require "dropbox-api/tasks"
>Dropbox::API::Tasks.install
## execute: rake dropbox:authorize
Dropbox::API::Config.app_key = YOUR_API_KEY
Dropbox::API::Config.app_secret = YOUR_SECRET_KEY
Dropbox::API::Config.mode = "dropbox"
## see steps for rake authorization!
client = Dropbox::API::Client.new(:token => 'some_token', :secret => 'some_secret')
Dir.chdir("/path/to/Dropbox")
files = Dir["**/**"]; nil
deleted_files = files.map{|x| File.size(x) == 0 ? x : nil}.compact!.sort; nil
deleted_files.each do |filename|
begin
file = client.find(filename)
revs = file.revisions
puts "#{filename}: #{revs.size} revs"
if revs.size > 0
good_revision = revs.find{|x| x.bytes > 0 }
puts "restoring #{filename} to rev #{good_revision.rev}"
file.restore(good_revision.rev)
end
rescue Exception => e
puts "ERROR #{e.message}, #{e.backtrace}"
end
end
### DONE!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment