forked from ranvel/clonefile-dedup
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclonefile-verify.py
executable file
·30 lines (25 loc) · 999 Bytes
/
clonefile-verify.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python3
import sqlite3, subprocess
conn = sqlite3.connect('clonefile-index.sqlite')
with conn:
cur = conn.cursor()
cur.execute("SELECT chksum, COUNT(*) c FROM files GROUP BY chksum HAVING c > 1;")
results = cur.fetchall()
for result in results:
dupscur = conn.cursor()
dupscur.execute("select file from files where chksum = '"+ result[0]+"';")
# print(result)
dupesResults = dupscur.fetchall()
fileIndex = 0
for dupesResult in dupesResults:
print("Verifying file: " + dupesResult[0])
chksumRaw = subprocess.run(['shasum', '-a', '256', dupesResult[0]], stdout=subprocess.PIPE)
chksum = chksumRaw.stdout.split()[0].decode("utf-8")
print("Original checksum: \t \t "+ result[0])
print("New file: \t \t \t "+ chksum)
# I should probably add some logic here to ignore Spotlight search files.
if chksum == result[0]:
print("\033[1;32mVerified!!\033[1;m")
else:
input("Failed to verify: " + dupesResult[0])
conn.close()