有没有 NAS 自带工具或者文件管理软件能在文件上传之前验证 NAS 上已经存在该文件? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
shijingshijing
V2EX    程序员

有没有 NAS 自带工具或者文件管理软件能在文件上传之前验证 NAS 上已经存在该文件?

  •  
  •   shijingshijing 2023-07-19 10:41:18 +08:00 2044 次点击
    这是一个创建于 818 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假如我有一个文件夹需要上传到 NAS ,里面是手机照片什么的,我需要知道 NAS 上面是否已经保存过该照片了,这样我就只需要上传这些 NAS 上没有的图片。

    我知道有的同步软件可以只差分同步,但是我需要不是同步,而是明确知道哪些文件已经存在,后续我有自己手动调整的需求。

    16 条回复    2023-07-19 14:48:10 +08:00
    liuwei889
        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)
    filtrate
        2
    filtrate  
       2023-07-19 11:14:47 +08:00
    我都是用 rsync 手动同步
    ButcherHu
        3
    ButcherHu  
       2023-07-19 12:54:03 +08:00
    最简单就是用文件系统的 ddump 功能,或者是对象存储的 dedump 功能。
    不然就找 dedump 软件咯,这个一搜一大把,这也符合你说的之后处理的需求。
    ButcherHu
        4
    ButcherHu  
       2023-07-19 12:55:41 +08:00
    上传之前啊,我看错了,要是都在一个目录里面可以用 rsync
    vmebeh
        5
    vmebeh  
       2023-07-19 13:23:01 +08:00 via iPhone
    total commander
    zcjfesky
        6
    zcjfesky  
       2023-07-19 13:24:22 +08:00 via Android
    nastool 我记得可以查视频是否重复...
    xdeng
        7
    xdeng  
       2023-07-19 14:09:03 +08:00
    写个程序扫描 先比较大小 相同再比较哈希
    Ericality
        8
    Ericality  
       2023-07-19 14:13:51 +08:00
    我思索了一下
    你 windows 直接拖拽进去
    他发现重复的不是就会提示你是替换还是跳过么
    不过确实一改文件名就不行了
    shijingshijing
        9
    shijingshijing  
    OP
       2023-07-19 14:18:04 +08:00
    @Ericality 你猜我为什么需要找一个工具?

    我就是像你说的这样搞过,几千个图片文件,这里面还有很多是 IMG_xxxx.jpg 这种名字重复的,拖过去后一个个确认,点了几百次,弄完之后我再也不敢了,宁愿新建一个文件夹,允许有一大堆重复的。
    VirgilChen97
        10
    VirgilChen97  
       2023-07-19 14:22:24 +08:00 via Android
    freefilesync ,可以比对两个文件夹的内容
    Ericality
        11
    Ericality  
       2023-07-19 14:31:04 +08:00
    @shijingshijing 首先我记得 window 实际上有个 让我决定每个文件的选项 里面会默认勾选跳过具有相同大小和日期的文件 所以不需要手动点
    但是像我说的 改名字就能跳过确实和去重的需求有差距
    期待是否有 v 友分享更好用的工具吧
    6Bpencle
        12
    6Bpencle  
       2023-07-19 14:38:41 +08:00
    goodsync 或者 freefilesync ?都可以执行仅分析操作
    yunyuyuan
        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 等等
    Tee
        14
    Tee  
       2023-07-19 14:44:22 +08:00
    rsync
    shijingshijing
        15
    shijingshijing  
    OP
       2023-07-19 14:47:00 +08:00
    @Ericality 是有这个选项,但是这个选项是一把梭,一旦选择之后,后面所有文件都要么替换要么不替换。没办法精细控制,要想精细控制只能手动一个个弄。
    shijingshijing
        16
    shijingshijing  
    OP
       2023-07-19 14:48:10 +08:00
    @yunyuyuan 也是个办法,但是最终极的还是二进制比对,起码先获取文件 Hash ,然后比对。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     937 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:07 PVG 06:07 LAX 15:07 JFK 18:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86