利用七牛雲解決PC端檔案同步

2021-08-12 00:15:52 字數 2548 閱讀 9271

經常有一些文件需要在公司和家裡的兩地電腦間手工同步,很麻煩,於是利用七牛雲免費的空間來做服務端實現同步功能。

同時,為了文件內容保密,我採用cryptography模組(通過指定乙個複雜的字串)對檔案加密,這樣即使別人獲取了七牛雲上的檔案也無法破解。

import os, time, uuid, requests

from qiniu import auth, put_file, urlsafe_base64_encode, bucketmanager

import qiniu.config

from cryptography.fernet import fernet

from binascii import b2a_hex, a2b_hex

class

sync

(object):

def__init__

(self, userkey):

self.fernet = fernet(b'dutmoqzcwiambkwntgr4axrw-******x=')

self.qn = auth('uhzohyzt0mel', 'gztly7c30wzw')

self.userkey = userkey

self.buckname = 'bsync'

self.tmpfile = os.path.join(os.environ['temp'], self.userkey)

defgetrlut

(self):

'''get remote last update time'''

bucket = bucketmanager(self.qn)

ret, obj, info = bucket.list(bucket=self.buckname, prefix=self.userkey+'/')

lastupdatetime = ''

for i in ret['items']:

updatetime = i['key'].split('/')[1]

if updatetime > lastupdatetime:

lastupdatetime = updatetime

return lastupdatetime

defput(self, timestr):

with open(self.bmfile, 'r', encoding='utf8') as f:

content = self.fernet.encrypt(bytes(f.read(), encoding='utf8'))

with open(self.tmpfile, 'wb') as f:

f.write(content)

filekey = self.genfilekey(timestr)

token = self.qn.upload_token(self.buckname, filekey, 3600)

ret, info = put_file(token, filekey, self.tmpfile)

defget(self, timestr):

filekey = self.genfilekey(timestr)

base_url = '' % (filekey)

private_url = self.qn.private_download_url(base_url, expires=3600)

resp = requests.get(private_url)

with open(self.bmfile, 'w', encoding='utf8') as f:

content = self.fernet.decrypt(resp.content)

f.write(content.decode('utf8'))

defgenfilekey

(self, timestr):

return self.userkey + '/' + timestr

defrun(self):

ifnot os.path.exists(self.bmfile):

return

remotelasttimestr = self.getrlut()

locallasttimestr = time.strftime('%y%m%d%h%m%s', time.localtime(os.path.getmtime(self.bmfile)))

if remotelasttimestr < locallasttimestr:

self.put(locallasttimestr)

print("伺服器已更新為最新")

elif remotelasttimestr > locallasttimestr:

self.get(remotelasttimestr)

print("本地已更新為最新")

else:

print("伺服器與本地狀態同步")

if __name__ == '__main__':

sb = sync('test')

sb.run()

web移動端和PC端利用chrome同步開發除錯

1 移動裝置和pc裝置必須安裝了chrome 32以上的版本,移動裝置必須為android4.0 2 移動裝置進入設定功能,設定為開發模式 3 pc端chrome開啟chrome inspect devices,裡面的選項打勾 4 用資料線連線移動裝置與pc裝置 5 手機開啟usb除錯模式 一般插了...

七牛雲,阿里OSS,資料夾同步

一,七牛雲 1.命令列工具 qshell 2.使用 qshell 同步目錄 3.github qupload使用指令 總結步驟 2.檢視當前linux環境bash型別 echo shell 3.vim bashrc 末尾增加一行 export path path home python downlo...

七牛雲儲存上傳檔案

折騰了乙個晚上,終於在 2016 08 06 00 56 22 這個是重要的時間點成功的上傳了一張,看了好多篇部落格,收益都不是很大,但有了個大致的了解。這這篇部落格中,我copy了其中的 放在ide中跑了一下,缺少幾個js檔案,補齊了之後還是不能成功執行,f12看了console返回了401的錯誤...