Browse Source

added hashify

fs_class
Raphael Roberts 7 years ago
parent
commit
5908218cc2
  1. BIN
      .sql.swp
  2. 30
      backup.py
  3. 32
      fs_class.py

BIN
.sql.swp

30
backup.py

@ -27,36 +27,6 @@ def file_hash(path, block_size=4096*8):
_hash.update(bytes)
return _hash.digest()
def hashify(top):
old_dir = os.getcwd()
os.chdir(top)
ret = []
imo_hashes = set()
for root,dirs,files in os.walk('.'):
try:
for file in files:
filepath = os.path.join(root,file)
imohash = _imohash(filepath)
real_hash = None
if imohash in imo_hashes:
real_hash = file_hash(filepath)
else:
imo_hashes.add(imohash)
ret.append(
(
filepath,
imohash,
real_hash
)
)
except PermissionError:
print('Access denied:',root)
except Exception as e:
print(e,file)
os.chdir(old_dir)
#print(imo_hashes)
return ret
def backup(top,db_path):
paths = hashify(top)
con = __init_database__(db_path)

32
fs_class.py

@ -1,8 +1,31 @@
#!/usr/bin/python
import sqlite3
import functools
def hash_file(path,hash_if_less,sample):
return _imohash(path,hash_if_less,sample)
def hashify(top,hashfunc):
old_dir = os.getcwd()
os.chdir(top)
ret = []
for root,dirs,files in os.walk('.'):
try:
for file in files:
filepath = os.path.join(root,file)
hash = hashfunc(filepath)
ret.append(
(
filepath,
hash
)
)
except PermissionError:
print('Access denied:',root)
except Exception as e:
print(e,file)
os.chdir(old_dir)
return ret
def __init_database__(con):
cur = con.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS `PATHS` (
@ -19,6 +42,11 @@ class fs:
self.top=top
self.hash_threshold=hash_threshold
self.sample_size=sample_size
self.hashfunc = functools.partial(
hashfile,
hash_if_less=self.hash_threshold,
sample=self.sample
)
if db_path is None:
self.db_path = 'fs.db'
else:
@ -26,6 +54,8 @@ class fs:
self.con = sqlite3.connect(self.db_path)
__init_database__(self.con)
self.cur = self.con.cursor()
self.hash_files = {}
if id is None:
self.cur.execute('SELECT MAX(id) FROM backups')
id=self.cur.fetchone()
@ -43,7 +73,7 @@ class fs:
pass
def backup(self,other):
pass
if __name__ == "__main__":
import os
test = fs(os.getcwd())
Loading…
Cancel
Save