-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathclonefile-verify.py
executable file
·30 lines (25 loc) · 1014 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 chksumfull, COUNT(*) c FROM files WHERE chksumfull != '' GROUP BY chksumfull HAVING c > 1")
results = cur.fetchall()
for result in results:
dupscur = conn.cursor()
dupscur.execute("SELECT file FROM files WHERE chksumfull = ?", (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()