黑群晖利用存储空间分析器和python脚本,删除重复的文件

2022-11-11 17:50:53 47点赞 475收藏 26评论

由于自己瞎鼓捣Mentens,导致Drive里的重复照片和视频越来越多了.于是便使用存储空间分析器,看一下有哪些重复的照片和视频(存储空间分析器安装很简单,打开套件中心搜索 存储空间分析器,按就行了).

多图预警黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

黑群晖利用存储空间分析器和python脚本,删除重复的文件

分析是分析完了.也可以在分析器里手动删除(你要真这样删除,我也无话可说.毕竟我又不是二傻子......黑群晖利用存储空间分析器和python脚本,删除重复的文件 )

Python脚本实现文件MD5对比

首先,我们要先从分析报告里获取到已经筛选出的重复文件路径.

黑群晖利用存储空间分析器和python脚本,删除重复的文件

我们的分析器报告存储的位置是volume2中,所以我的报告的完整路径应该是:/volume2/strong_report/synoreport/ReaptPhoto/2022-11-02_11-22-21/csv

前面是固定的路径不变,只有2022-11-02_11-22-21 这个是随着每次分析时,按照当前时间命名的文件夹.我们可以利用os.listdir(path)来获取这个文件夹的名字.完成拼接.

拼接完成后,就是解压缩包含csv的zip文件.然后利用字符串分割,把文件路径取出来,进行MD5和文件名长度的对比.最后再进行删除操作.

把python脚本上传到一个目录里

黑群晖利用存储空间分析器和python脚本,删除重复的文件

添加计划任务(计划任务的时间要比分析器执行的时间往后去,要先分析文件,再进行删除).

黑群晖利用存储空间分析器和python脚本,删除重复的文件

电子邮件通知要先在通知里配置.运行命令 python3 你的python脚本路径电子邮件通知要先在通知里配置.运行命令 python3 你的python脚本路径

然后运行一下计划任务,看看结果如何. 这个结果是在邮件里哟.

黑群晖利用存储空间分析器和python脚本,删除重复的文件

不让放下载地址.咋整?

#!/usr/bin/env python
# coding:utf-8

# Name : remove_picture.py
# Author : junkecm
# Mail : 554680244@qq.com
# Time : 2022/11/1 9:15
# Desc:

import csv
import hashlib
import os
import random
import shutil
import time
import zipfile


def zip_csv_file():
zip_path = '/volume2/strong_report/synoreport/ReaptPhoto/%s/csv/' # 这里需要改成你自己的csv报告的路径
zip_dir = os.listdir('/volume2/strong_report/synoreport/ReaptPhoto/') # 这里就是2022-11-02_11-22-21的上级目录路径
zip_path = zip_path % zip_dir[-1]
zipFile = zipfile.ZipFile(os.path.join(zip_path, 'duplicate_file.csv.zip')) # duplicate_file.csv.zip是固定不变的,不用更改
for file in zipFile.namelist():
zipFile.extract(file, '/volume2/python_shell/') # 这个是你python文件存放的目录,填写你自己的目录
zipFile.close()
# time.sleep(random.randint(3, 9))


def del_file():
files_dict = {}
index = 0
r_index = 0
with open('/volume2/python_shell/duplicate_file.csv', 'r',
encoding='utf-16') as file: # 同上填写你对接python文件执行目录加上你要分析的csv文件名
texts = csv.reader(file)
for item in texts:
index += 1
print("Processing: %s." % str(index))
for i in item:
vid, home, path, size, mtime = i.split('t', 4)
if path == 'File':
pass
else:
path = path.replace('"', '')
md5_hash = hashlib.md5()
try:
with open(path, "rb+") as f:
for byte_block in iter(lambda: f.read(4096), b""):
md5_hash.update(byte_block)
file_md5 = md5_hash.hexdigest()
if files_dict.get(file_md5) is None:
files_dict[file_md5] = path
else:
d_path = files_dict[file_md5]
if len(str(d_path)) < len((path)):
print('Delete File:', path)
os.remove(path)
r_index += 1
except Exception as e:
print('File does not exist or has been deleted')
print('Repeat Files Num:%s.All deleted!' % str(r_index))


if __name__ == '__main__':
zip_csv_file()
del_file()

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
26评论

  • 精彩
  • 最新
  • 之前迁移照片数据不小心迁移重复了,手动删太麻烦了,后来就放弃删除了,今天看到了这个脚本,觉着很有用,不过我有个疑问,像我这种情况,怎么保留最原始的那一份,而删除文件修改日期被修改过的那个重复文件呢?

    校验提示文案

    提交
    意思是删除后面日期的,保留最早日期的?我的问题是用易有云,每次照片备份总是在nas中保存四份,不知道什么原因。

    校验提示文案

    提交
    对比创建时间,或者修改时间,保留最久远的那一份文件.

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 这个帖子好,家庭照片重复文件删除清理是个普遍烦人的问题,希望楼主多些解决经验和动手方法的分享。

    校验提示文案

    提交
    如果照片太多的话,手动删除,太慢了.

    校验提示文案

    提交
    收起所有回复
  • 请分享一下脚本

    校验提示文案

    提交
    去看看 这是下载地址

    校验提示文案

    提交
    收起所有回复
  • 我也做过类似的,不过我直接用python扫描重复文件名,再对比md5

    校验提示文案

    提交
    我是利用存储分析器扫描文件,然后再用python进行MD5对比.

    校验提示文案

    提交
    python直接扫描文件嘛,省去存储分析器那一步

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 原来群晖没有自动去重的功能啊。

    校验提示文案

    提交
    群晖可以分析出来,要你手动删除.

    校验提示文案

    提交
    收起所有回复
  • 根据@ClegeAd的提示.我才想起来,没必要这么麻烦.所以又写了一个更简单的脚本.也满足了@MoonStones 所说的保留最原始的文件这个要求.只是帖子不能再编辑了.也懒得再开贴了.有需要的,私信我吧

    校验提示文案

    提交
    大佬,没找到私信地方,可以把最新的这个脚本贴在评论区嘛?

    校验提示文案

    提交
    字数太多了.好像贴不上来.

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 大佬脚本地址发一下呀,实在不行中间加一些其他符号,复制的时候手动删除也可以啊

    校验提示文案

    提交
  • 谢谢,太有用了

    校验提示文案

    提交
  • 如果能删掉,再建立btrfs的引用链接就好了,不然还想用那个文件夹就找不到这个文件了 [喜极而泣]

    校验提示文案

    提交
    是阿,脚本值得优化

    校验提示文案

    提交
    收起所有回复
  • 你敢说我是二傻子,我跟你誓不两立。 [火冒三丈]

    校验提示文案

    提交
  • 正好需要 谢谢up

    校验提示文案

    提交
  • 当初为了查找,删除重复,以及一些垃圾的时候,经历了全盘格式化,删除,误删,没效果之后,总算是搞定了。人生苦短。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

大橡皮啊

Ta还没有介绍自己

发文累计被1184人收藏

关注 打赏
作者其他文章
相关好价
最新文章 热门文章
475
扫一下,分享更方便,购买更轻松