V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
syficy
V2EX  ›  程序员

当备份工具遇到 node_modules,真的没有优雅的解决方案吗

  •  
  •   syficy · 2020-12-03 19:15:50 +08:00 · 3287 次点击
    这是一个创建于 1458 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端开发,想备份个人文件到外置硬盘和云端,但是 windows 下常见的文件备份相关工具(如 OneDrive 、windows 自带的文件备份工具等)没有提供类似.gitignore 的配置选择,因此遇到 node_modules 这种几万个小文件的文件夹,都会消耗大量的系统资源。

    当然我知道可以去选择下载别的工具来支持跳过 node_modules 进行文件备份,但是当我要为这 node_modules 付出大量妥协的代价的时候,不得不去思考 node_modules 存在的价值。

    有一说一,微软自带的文件备份以及 OneDrive 都挺好用的,也许有人说这些文件工具不是用来备份代码的,备份代码得用 git,我现在确实是把代码文件和个人文件割裂开来采取不同的备份方式,但是如果能统一就实在是太棒了。若不是 node_modules 的存在,我可以做到个人文件在本地仓库盘+OneDrive 云端盘无感备份。万恶的 node_modules 。

    还有一种解决方案就是写个脚本把所有项目的 node_modules 删掉,每次用项目的时候再 npm install,还是太麻烦。

    不知各位有无别的优雅解决方案。

    14 条回复    2021-04-09 08:41:00 +08:00
    Clarke
        1
    Clarke  
       2020-12-03 19:37:31 +08:00 via Android
    用 goodsync 可以排除任意名字的文件夹
    leelz
        2
    leelz  
       2020-12-03 19:38:51 +08:00
    为啥要删掉,搞一个文件夹放 OneDrive,将要备份的文件复制过去,然后过滤掉 node_modules 不就行了。
    stevenkang
        3
    stevenkang  
       2020-12-03 19:47:14 +08:00
    mklink /D node_modules D:/node_modules 将目录映射到别的位置?
    knives
        4
    knives  
       2020-12-03 21:07:06 +08:00
    感觉无解。用过 Syncthing 同步前端代码,走的也是忽略特定目录的路子。
    no1xsyzy
        5
    no1xsyzy  
       2020-12-03 21:39:13 +08:00
    按我拍脑袋觉得更可能符合你的需求的顺序:
    1. deno
    2. 用 OneDrive 的目录作为 git remote ( git remote 可以设置为本地另一路径。不清楚是否可以设置为压缩包,如果可以那是最好的。)
    3. 用其他能够进行 ignore 的同步方案,比如 nextcloud

    猜测可能可用的:node 和 git 都已知能够跟随符号链接
    看看 OneDrive 是否能够跟随符号链接,不能的话可以用符号链接。
    符号链接需要管理员权限才能建立。
    610915518
        6
    610915518  
       2020-12-03 22:00:13 +08:00 via iPhone
    写个定时脚本,触发 rsync
    610915518
        7
    610915518  
       2020-12-03 22:00:52 +08:00 via iPhone
    rsync 有个参数可以忽略部分文件的同步
    KuroNekoFan
        8
    KuroNekoFan  
       2020-12-03 22:28:40 +08:00
    package-lock 和 npm ci 值得你拥有
    KuroNekoFan
        9
    KuroNekoFan  
       2020-12-03 22:30:23 +08:00
    https://docs.npmjs.com/cli/v6/commands/npm-ci#description
    ```
    It can be significantly faster than a regular npm install by skipping certain user-oriented features.
    ```
    err1y
        10
    err1y  
       2020-12-04 08:42:00 +08:00 via iPhone
    git remote add
    将备份目录添加到 remote 中,然后提交到备份目录就可以了
    syficy
        11
    syficy  
    OP
       2020-12-04 11:21:31 +08:00
    @Clarke @stevenkang @no1xsyzy @610915518 感谢工具推荐,syncthing 有在使用,其它的我会有空试试,但我更想从源头上解决 node_modules 这个问题。
    @leelz 因为这样每次代码改动就要重新复制,工作量增大了很多,做不到无感备份。
    @no1xsyzy @KuroNekoFan @err1y 感谢提供的思路 ,正在尝试中。
    leelz
        12
    leelz  
       2020-12-04 13:52:59 +08:00
    @syficy 把你的那个脚本变成定时脚本就行吖
    hcsu
        13
    hcsu  
       2021-01-13 22:19:06 +08:00
    我也在痛苦中...这有个用 rsync 的例子,但貌似只能单向,而且我用 rsync 同步了 15w 个文件,感觉有丢失,不太靠谱

    https://arshaw.com/exclude-node-modules-dropbox-google-drive
    ron0115
        14
    ron0115  
       2021-04-09 08:41:00 +08:00 via Android
    想问楼主找到办法了吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2626 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:37 · PVG 19:37 · LAX 03:37 · JFK 06:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.