localtags 一个开源的本地文件备份工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
SuperMild
5.49D
V2EX    分享创造

localtags 一个开源的本地文件备份工具

  •  
  •   SuperMild
    ahui2016 2021-05-05 09:12:39 +08:00 3904 次点击
    这是一个创建于 1668 天前的主题,其中的信息可能已经有所发展或是发生改变。

    四大主要功能:

    1. 文件备份
    2. 定期查错(确保文件完整性)
    3. 标签管理
    4. 文件历史版本

    网盘备份的缺点

    现在很多人备份文件,都会选择网盘。网盘备份当然有很多优点,但也有一些缺点:

    • 有泄漏个人隐私的风险
    • 有触犯平台规定而被删文件的风险
    • 可能产生较高费用(或未来可能涨价,转移难度大)
    • 一些免费或低价的网盘不提供冗余备份(即,你的文件在他们的服务器里只有一个拷贝,万一文件损坏就无法修复)
    • 由于没有冗余备份,当上传压缩文件或加密文件时,会有较大风险因文件局部损坏而无法打开。
    • 同步逻辑是一个非常复杂的问题,网盘同步会偶尔出现问题,已经看到有少数人发帖说曾丢失文件。

    本地备份的优点

    因此,我想另辟蹊径,看能不能做一个本地备份工具,优点和目标如下:

    • 个人隐私风险控制在本地(与网盘相比,少了网上泄漏因素)
    • 敏感信息、隐私照片、可能因违规而被扫描或删除的文件等,都可以安心备份,不怕被网盘平台扫描。
    • 费用可控(实现了冗余备份与定期查错功能,因此购买普通质量的硬盘即可,比高规格硬盘便宜很多。当然,资金充裕的用户可以购买优质硬盘,费用弹性很大。)
    • 采用单向同步的备份逻辑,因此备份逻辑非常简单,不容易出错(而网盘是双向或多用户端同步,逻辑非常复杂,较容易出错)
    • 采用正确设计的标签管理系统,没有文件夹,对文件进行纯标签管理。
    • 开源,代码尽可能简单,用户可轻松魔改。

    文件版本管理

    除了上述优点,本软件还有一个简单的文件历史版本功能:

    • 当上传文件时,会检查待上传文件的内容,如果在数据库中有内容完全一样的文件,会禁止上传,确保数据库中没有重复文件。
    • 如果待上传文件与数据中的文件重名,但内容不同,上传后文件名旁有数字显示同名文件的数量,点击数字可展示全部同名文件,按入库日期排列。

    传统的文件管理,在同一文件夹下不允许同名文件,对于日常办公编辑 work, excel, ppt 的人来说,需要手动更改文件名才能保存不同版本,很不方便。使用本软件可满足这种情况下的文件历史版本需求。

    项目源码

    https://github.com/ahui2016/localtags

    第 1 条附言    2021-05-05 10:12:23 +08:00
    23 条回复    2022-07-27 00:18:03 +08:00
    512357301
        1
    512357301  
       2021-05-05 09:15:28 +08:00 via Android
    freefilesync 了解下
    cmdOptionKana
        2
    cmdOptionKana  
       2021-05-05 09:22:11 +08:00
    @512357301 那个与我的软件差异极大,很难比较,不同之处太多了。在我看来,甚至不是同类软件。
    SuperMild
        3
    SuperMild  
    OP
       2021-05-05 09:29:38 +08:00
    @512357301 那个与我的软件差异极大,很难比较,不同之处太多了。在我看来,甚至不是同类软件。

    (cmdOptionKana 也是我,因为那个号讨论太多非技术问题被降权了,无奈换号发帖)
    YokitCoder
        4
    YokitCoder  
       2021-05-05 09:29:52 +08:00
    楼主可以传两几张截图吗,这样大家可以更直观的了解软件的功能。
    SuperMild
        5
    SuperMild  
    OP
       2021-05-05 09:34:31 +08:00
    @YokitCoder 好的,我这就弄(刚才忘记了……
    dandycheung
        6
    dandycheung  
       2021-05-05 09:48:53 +08:00 via Android
    有点意思,关注
    Acoffice
        7
    Acoffice  
       2021-05-05 09:58:02 +08:00
    丑丑笔记作者啊,怪不得 id 眼熟,一如既往的标签呐
    SuperMild
        8
    SuperMild  
    OP
       2021-05-05 10:12:46 +08:00
    @YokitCoder OK,在正文后追加了截图
    SuperMild
        9
    SuperMild  
    OP
       2021-05-05 10:13:30 +08:00
    coolair
        10
    coolair  
       2021-05-05 10:35:00 +08:00 via Android
    freefilesync 这软件是会在每个文件夹生成一个数据库文件吗?这个数据库文件是一个吗?
    pC0oc4EbCSsJUy4W
        11
    pC0oc4EbCSsJUy4W  
       2021-05-05 14:06:06 +08:00
    syncthing
    imn1
        12
    imn1  
       2021-05-05 14:48:37 +08:00
    说句实话,想法虽好,但有点四不像
    个人文件备份有三个方向|类别:
    1. 自己创造的文件,各种 PI (Personal Information)相关,联系人、日历、邮件、自写文档、拍照、视频……
    这类文件个性化需求比较大,几乎每个人的需求都不同
    2. 自己搜集的文件,文档、媒体、娱乐、冷门软件安装包……
    这类文件搜索需求比较大,搜索功能必须强大
    3. 软件生成的文件,各种 conf, ini……
    这类文件在恢复系统作用很大,但平常没什么用,不会复读,也不需要搜索,但是保持版本很重要
    而且普通人不容易分辨哪个文件需要备份,哪个文件只是运行时临时生成的,无需备份,甚至在哪个路径都不知道,例如,只需要备份 potplayer.ini 就够了

    截图没见到 restore
    rekulas
        13
    rekulas  
       2021-05-05 15:40:18 +08:00
    个人隐私风险控制在本地、敏感信息、隐私照片、可能因违规而被扫描或删除的文件等,都可以安心备份
    是如何实现的,有加密 /混淆机制?
    我目前就是数据都放 nas 然后备份到百度云,重要数据 zip 加密压缩
    SuperMild
        14
    SuperMild  
    OP
       2021-05-05 17:21:59 +08:00
    @imn1 必然是四不像的,如果像某一个,我就不用自己做了,直接去用、或去小改后用就可以了。

    我不希望太自动化,太智能,不管什么文件,经过自己动过脑子赋予合适的标签后,全部文件都会变得非常有条理,在大脑里这些文件是整齐的。

    大众化的产品,为了迎合小白用户,会让文件随意堆放,在大脑里那些文件就是无秩序的一堆,然后再靠所谓的强大搜索功能去在一堆混乱的东西里找,能找出来什么,心里也没底。

    我弄了一个比较合理的标签系统,文件放进去时整整齐齐,找文件时也大概知道能找出什么东西来。简而言之,增加了人脑的参与度。
    SuperMild
        15
    SuperMild  
    OP
       2021-05-05 17:26:49 +08:00
    @rekulas 不是…… 我这个只有本地,没有与网盘连接。

    本来打算做成可以与对象储存连接的,但暂时本地储存我就够用,就偷懒没有做。

    zip 加密放在普通网盘里,只要文件有一点点损坏,都打不开,而且网盘也不帮忙扫描,放了很多年之后,要到下载时才能知道文件有没有坏。
    rekulas
        16
    rekulas  
       2021-05-05 20:58:07 +08:00
    @SuperMild 这个暂时还没发现,不过就算有类似问题也对我影响不大,我是每天一个版本都会备份,即使少数出现问题,也问题不大,毕竟还有 nas 保障
    hwlhwlxyz
        17
    hwlhwlxyz  
       2021-05-06 12:53:49 +08:00
    我脑袋里也有类似想法,但是都没有付诸实践。标签功能还挺实用的,但是没有哪种可以跨平台的工具。或者说,只是我没有遇见?
    SuperMild
        18
    SuperMild  
    OP
       2021-05-06 13:50:40 +08:00
    @hwlhwlxyz 我这个就是跨平台的,后端采用 Golang, 在 Win Mac Linux 里都可以运行, 前端采用网页, 有浏览器就行.

    另外如果修改一下代码, 还可以改成一个网站, 任何电脑手机都可以通过网络访问 (但这样的话, 就要改成云端备份而不是本地备份, 虽然备份的地点不同, 但标签系统可以复用).

    或者改写为 Electron 也能桌面系统跨平台, 前端代码可以保持不变, 后端改用 nodejs 来做增删改查就行.
    hwlhwlxyz
        19
    hwlhwlxyz  
       2021-05-07 08:52:32 +08:00
    楼主这个工具让人很受启发。
    是的,改成网站的这个想法很不错。我感觉应该是直接在在局域网里面一个机器上启动这个服务就能直接使用了。然后机器上的文件夹映射出来或者开个 ftp 这种服务。
    SuperMild
        20
    SuperMild  
    OP
       2021-05-07 22:03:15 +08:00
    @hwlhwlxyz 确实像你说那样更好,以后我也有可能改成那样,这个工具我自己会长期使用,后续一边用一边改进。
    root01
        21
    root01  
       2021-06-01 10:37:17 +08:00
    exe 文件呢
    SuperMild
        22
    SuperMild  
    OP
       2021-06-03 11:56:13 +08:00
    @root01 刚刚弄了一个上去,在这里 https://github.com/ahui2016/localtags/releases
    summersun2021
        23
    summersun2021  
       2022-07-27 00:18:03 +08:00 via iPhone
    小白,mac 系统,能告诉怎么用的吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1029 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:35 PVG 07:35 LAX 15:35 JFK 18:35
    Do have faith in what you're doing.
    ubao msn 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