Browse Source

completed core functionality testing

restore_refactor
Raphael Roberts 7 years ago
parent
commit
0ff657e703
  1. 10
      backup.py
  2. 43
      restore.py

10
backup.py

@ -1,10 +1,11 @@
#!/usr/bin/python
from imohash.imohash import hashfile as _imohash
import hashlib
import hashlib
import multiprocessing
import os
import psutil
import sqlite3
import argparse
# https://stackoverflow.com/a/17782753
def file_hash(path, block_size=4096*8):
'''
@ -66,4 +67,9 @@ def backup(top,db_path):
cur.executemany('INSERT OR IGNORE INTO `paths` VALUES (?,?,?);',paths)
con.commit()
if __name__ == "__main__":
backup(os.path.expandvars('%userprofile%'),'test.db')
parser = argparse.ArgumentParser()
parser.add_argument('dir')
parser.add_argument('-d','--database',default='fs.db')
args = parser.parse_args()
__init_database__(args.database)
backup(args.dir,args.database)

43
restore.py

@ -0,0 +1,43 @@
#!/usr/bin/python
from backup import hashify
import argparse
import datetime
import time
import shutil
import os
import sqlite3
def create_temp():
name= 'fsb{}'.format(datetime.datetime.today())
os.mkdir(name)
return name
def lookup(cur,imohash,realhash=None):
if realhash is not None:
cur.execute('SELECT path FROM paths where blake=?',[realhash])
else:
cur.execute('SELECT path FROM paths where imohash=?',[imohash])
res = cur.fetchone()
if len(res) == 1:
return res[0]
def restore(database,source,destination):
con=sqlite3.connect(database)
cur=con.cursor()
temp = create_temp()
hashes = hashify(source)
for path,imohash,realhash in hashes:
ppath = os.path.join(source,path)
qpath=lookup(cur,imohash,realhash)
qpath=os.path.join(temp,qpth)
parent = os.path.dirname(qpath)
if not os.path.exists(parent):
os.makedirs(parent)
shutil.move(ppath,qpath)
shutil.move(temp,dest)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('database')
parser.add_argument('src')
parser.add_argument('dst',default = None,nargs='?')
args = parser.parse_args()
if args.dst is None:
args.dst=args.src
restore(args.database,args.src,args.dst)
Loading…
Cancel
Save