假如我有一个文件夹需要上传到 NAS ,里面是手机照片什么的,我需要知道 NAS 上面是否已经保存过该照片了,这样我就只需要上传这些 NAS 上没有的图片。
我知道有的同步软件可以只差分同步,但是我需要不是同步,而是明确知道哪些文件已经存在,后续我有自己手动调整的需求。
1
liuwei889 2023-07-19 10:59:44 +08:00 1
在 NAS 部署一个 api,该 api 接受入参 filename,判断是否存在,是则 True,否则 False
import os from django.http import JsonResponse def check_file_existence(request): if request.method == 'GET': filename = request.GET.get('filename', None) if filename: # 拼接文件的绝对路径 file_path = os.path.join('path/to/your/files/', filename) # 替换为你的文件存储路径 exists = os.path.exists(file_path) return JsonResponse({'exists': exists}) else: return JsonResponse({'error': 'Missing "filename" parameter.'}, status=400) else: return JsonResponse({'error': 'Invalid request method.'}, status=405) |
2
jinqzzz 2023-07-19 11:14:47 +08:00
我都是用 rsync 手动同步
|
3
ButcherHu 2023-07-19 12:54:03 +08:00
最简单就是用文件系统的 ddump 功能,或者是对象存储的 dedump 功能。
不然就找 dedump 软件咯,这个一搜一大把,这也符合你说的之后处理的需求。 |
4
ButcherHu 2023-07-19 12:55:41 +08:00
上传之前啊,我看错了,要是都在一个目录里面可以用 rsync
|
5
vmebeh 2023-07-19 13:23:01 +08:00 via iPhone
total commander
|
6
zcjfesky 2023-07-19 13:24:22 +08:00 via Android
nastool 我记得可以查视频是否重复...
|
7
xdeng 2023-07-19 14:09:03 +08:00
写个程序扫描 先比较大小 相同再比较哈希
|
8
Ericality 2023-07-19 14:13:51 +08:00
我思索了一下
你 windows 直接拖拽进去 他发现重复的不是就会提示你是替换还是跳过么 不过确实一改文件名就不行了 |
9
shijingshijing OP @Ericality 你猜我为什么需要找一个工具?
我就是像你说的这样搞过,几千个图片文件,这里面还有很多是 IMG_xxxx.jpg 这种名字重复的,拖过去后一个个确认,点了几百次,弄完之后我再也不敢了,宁愿新建一个文件夹,允许有一大堆重复的。 |
10
VirgilChen97 2023-07-19 14:22:24 +08:00 via Android
freefilesync ,可以比对两个文件夹的内容
|
11
Ericality 2023-07-19 14:31:04 +08:00
@shijingshijing 首先我记得 window 实际上有个 让我决定每个文件的选项 里面会默认勾选跳过具有相同大小和日期的文件 所以不需要手动点
但是像我说的 改名字就能跳过确实和去重的需求有差距 期待是否有 v 友分享更好用的工具吧 |
12
6Bpencle 2023-07-19 14:38:41 +08:00
goodsync 或者 freefilesync ?都可以执行仅分析操作
|
13
yunyuyuan 2023-07-19 14:42:16 +08:00
我是写了脚本,定时把/path/to/picture/tmp 下面的图片或视频,根据 exif 命名为/path/to/picture/yyyy/MM/dd 这种形式。
如果有 exif 一样的,在对比两文件的大小: * 如果大小也一样,判断是同一个文件,删掉 * 如果大小不一样,则改成 yyyy/MM/dd-1 ,yyyy/MM/dd-2 等等 |
14
Tee 2023-07-19 14:44:22 +08:00
rsync
|
15
shijingshijing OP @Ericality 是有这个选项,但是这个选项是一把梭,一旦选择之后,后面所有文件都要么替换要么不替换。没办法精细控制,要想精细控制只能手动一个个弄。
|
16
shijingshijing OP @yunyuyuan 也是个办法,但是最终极的还是二进制比对,起码先获取文件 Hash ,然后比对。
|