利用python删除群晖中的重复文件(2)
最终效果:
删除重复文件,并保留创建日期更为久远的文件
上篇文章写了,利用群晖的存储空间分析器结合python来查找重复文件.经人提醒,发现完全不需要用到存储分析器.因为那个文章编辑次数到限制了.无法编辑了.只能重新开贴. 有一点小小的设置.看下图
file_type是一个文件类型的列表.在里面添加你想要删除的文件类型即可.每个文件类型之间用逗号隔开.
import os
import hashlib
# 只删除以下列表中的重复文件类型.如果想删除其他类型的文件,自己添加一下就行了
file_type = ['.jpg', '.jpeg', '.png', '.gif', '.psd', '.bmp', '.webp', '.mp4', '.mkv', '.avi', '.mov', 'mpeg', 'mpg',
'.rar', '.zip']
check_files = []
def remove_reapt_files():
for root, dirs, files in os.walk(r'/volume1/homes/xxxxxx/Drive/Moments/'):
for name in files:
# print(name)
p_type = os.path.splitext(os.path.join(root, name))[1]
if p_type in file_type:
check_files.append(os.path.join(root, name))
for name in dirs:
p_type = os.path.splitext(os.path.join(root, name))[1]
if p_type in file_type:
check_files.append(os.path.join(root, name))
files_dict = {}
r_index = 0
print('Fiels Num:%s' % len(check_files))
for value in check_files:
md5_hash = hashlib.md5()
try:
with open(value, "rb+") as f:
for byte_block in iter(lambda: f.read(4096), b""):
md5_hash.update(byte_block)
file_md5 = md5_hash.hexdigest()
print('Check file MD5:%s' % value)
if files_dict.get(file_md5) is None:
files_dict[file_md5] = value
else:
d_path = files_dict[file_md5]
d_path_stats = os.stat(d_path)
file_stats = os.stat(value)
d_time = d_path_stats.st_ctime
f_time = file_stats.st_ctime
if d_time > f_time:
os.remove(d_path)
files_dict[file_md5] = value
print('Delete File:', d_path)
r_index += 1
else:
os.remove(value)
print('Delete File:', value)
r_index += 1
except Exception as e:
pass
#print('File does not exist or has been deleted')
print('File Count:%s, Repeat Files Num:%s. All deleted!' %( len(check_files),str(r_index)))
if __name__ == '__main__':
remove_reapt_files()
文件下载之后,要添加到计划任务中.
先打开群晖上的File Station 新建一个文件夹.我这边取名叫 python_shell.然后把脚本文件复制到文件夹下.
然后打开计划任务,添加一个计划任务.执行频率.看个人喜好.运行命令就写python3 加上脚本的路径
这样就大功告成了.看看效果吧.
@eadir文件夹是群晖全局索引文件.所以删除的文件要比实际的重复要多.因为索引也删除了.






夏日如风
1、仅限用来处理photo文件夹下面的文件,所以修改了代码,不需要限制一些文件格式。同时排除了下面的带@的文件夹(猜测应该是索引);2、修改了代码按照最新的IMG_YYYYMMDD_HHMMSS格式命名,并将文件移动到对应的文件夹下面。
校验提示文案
Cathya
校验提示文案
nikdu
校验提示文案
ll381
校验提示文案
xeonfeng
校验提示文案
六六大顺的爸爸
校验提示文案
寒翌
File Count:0, Repeat Files Num:0. All deleted!
没有任何结果,请问问题出在哪里?
是不是没有安装hashlib?
校验提示文案
Eiranya
校验提示文案
神麽张大妈
D盘的目录怎么写
“D:\”直接替换引号内的“/volume1/homes/xxxxxx/Drive/Moments/”
貌似也报错
校验提示文案
whbain
校验提示文案
六六大顺的爸爸
校验提示文案
常爷凯申
校验提示文案
正高级助理工程师
校验提示文案
值友2602939252
校验提示文案
leeleeguo
校验提示文案
种草好朋友
校验提示文案
值友2985882827
校验提示文案
你很随意
校验提示文案
hrbagang
校验提示文案
嘟嘟坚果墙
校验提示文案
夏日如风
1、仅限用来处理photo文件夹下面的文件,所以修改了代码,不需要限制一些文件格式。同时排除了下面的带@的文件夹(猜测应该是索引);2、修改了代码按照最新的IMG_YYYYMMDD_HHMMSS格式命名,并将文件移动到对应的文件夹下面。
校验提示文案
夏日如风
校验提示文案
冷眼一生
校验提示文案
beyondgames
校验提示文案
晓得了
校验提示文案
Boyww
校验提示文案
油腻的大叔
校验提示文案
秋风一达
校验提示文案
qaqaqaq
校验提示文案
天地无念
校验提示文案
值友8810386877
File Count:0, Repeat Files Num:0. All deleted!
请问是什么问题啊
校验提示文案
值友8810386877
校验提示文案
hikerhan
校验提示文案
wtj1992
校验提示文案
正高级助理工程师
校验提示文案
y8y8y8
校验提示文案
垃圾佬毛线
校验提示文案
云导者
校验提示文案
常爷凯申
校验提示文案
whbain
校验提示文案