Posts Tagged dropbox
使用dropbox api来备份
最近发现越来越多的app集成dropbox来读取和保存文件了。我重新考虑了一下我的备份blog数据库的策略。之前我是直接在服务器上运行一个dropbox客户端来进行备份数据库,这样其实相当的浪费服务器资源。当然直接运行一个dropbox是比较简单,只要把保存到dropbox的文件夹下面即可。
不过为了不浪费服务器资源,我看了一下dropbox的api文档,写了一个简单的脚本来上传文件到dropbox。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#author: juntao liu
import sys
import json
from dropbox import client, rest, session
#app key and secret
APP_KEY = 'your app key'
APP_SECRET = 'your app secret key'
#access type 'dropbox' or 'app_folder'
ACCESS_TYPE = 'app_folder'
#TOKEN_FILE save token for next time access
TOKEN_FILE = 'your token file path'
class DPClient:
client = None
def __init__(self, app_key, app_secret, access_type='app_folder'):
self.sess = session.DropboxSession(app_key, app_secret, access_type)
self.request_token = self.sess.obtain_request_token()
def build_authorize_url(self):
# Make the user log in and authorize this token
return self.sess.build_authorize_url(self.request_token)
def token_from_dropbox(self):
#This will fail if the user didn't vist the authorize url and hit 'Allow'
self.access_token = self.sess.obtain_access_token(self.request_token)
self.key = self.access_token.key
self.secret = self.access_token.secret
self.client = client.DropboxClient(self.sess)
def token_from_file(self, file_path):
try:
d = json.loads(file(file_path).read())
self.sess.set_token(d['key'], d['secret'])
except:
return False
self.client = client.DropboxClient(self.sess)
return True
def save_token(self, file_path):
d = {'key': self.key, 'secret': self.secret}
file(file_path, 'w+').write(json.dumps(d))
def upload_file(self, full_path, rename='', overwrite=True):
from os import path
if not client:
print 'dropbox client not exists'
return
if not path.exists(full_path):
print 'file not exists'
return
f = open(full_path)
if not rename:
filename = path.basename(full_path)
else:
filename = rename
self.client.put_file(filename, f, overwrite)
if __name__ == '__main__':
if len(sys.argv) != 2:
print "./upload_dp.py <file>"
sys.exit(1)
dp = DPClient(APP_KEY, APP_SECRET)
if not dp.token_from_file(TOKEN_FILE):
print "url:", dp.build_authorize_url()
print "please authorize in the browser. After you're done, press enter"
raw_input()
dp.token_from_dropbox()
dp.save_token(TOKEN_FILE)
dp.upload_file(sys.argv[1])
很简单的程序,就像我说的很简单的目的只是为了上传文件。
默认DPClient上传文件会覆盖同名文件,并且使用传入的文件名作为上传的文件名。更多的功能请参考Dropbox的开发者网站:https://www.dropbox.com/developers
国内在线同步服务
今天同学找我说他把某个文件夹给覆盖掉了,也就是说文件夹中的文件全部被覆盖了。问我可有办法恢复过来,我向他推荐了两款文件误删除恢复软件。就我对计算机的了解,所谓的文件覆盖是分成两步:一是删除原文件;二是重新建立一个相同文件名的文件。理论上只要没有被覆盖掉还是有可能恢复出来的。很可惜我同学没有能把文件恢复出来。我不确定是否文件误删恢复软件没有办法做这种恢复。
最近遇到很多与数据备份有关的事情:老胡把人家的硬盘分区表清除并且重装了系统;在windows上改动分区表导致linux分区丢失,这个涉及到linux、windows分区表,这数据恢复的真是让我心惊胆战,最后居然让我把数据全部恢复了也是值得记述的一件事情;linux root分区总是出问题。越来越感觉数据安全真的很重要。
每个人的计算机随时都有可能遇到数据损坏以及丢失的烦恼,我建议使用一些数据在线同步服务。对于在线同步服务如何工作以及有什么用处可以参考:关于dbank这个数据同步服务一文。
以下是几个国内的在线同步服务。
金山快盘 http://k.wps.cn/
DBank数据银行 http://www.dbank.com
酷盘 http://www.kanbox.com
盛大EverBox http://www.everbox.com
目前盛大everbox还未开放注册,需要邀请码。其他三者都可以正常使用,不过个人比较推荐金山快盘与dbank。
当然我最推荐的还是dropbox,可以看此文:关于dropbox。
使用dropbox备份blog数据库
以前使用amazon s3 存储blog数据库的备份。这个拯救了过我的blog一次。彼时服务器突然被中断使用。那一次导致了我有段时间没有使用blog服务。
这一次在新的服务器上也写了1个月左右blog了,我又开始操心数据库的备份问题了。想到dropbox可以在linux后台运行。然后自己写了一个备份数据库的脚本,使用crontab每天定时备份一次。





Recent Comments