• 请不要在回答技术问题时复制粘贴 AI 生成的内容
syficy
V2EX  ›  程序员

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

  •  
  •   syficy · Dec 3, 2020 · 4829 views
    This topic created in 2164 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    猜测可能可用的:node 和 git 都已知能够跟随符号链接
    看看 OneDrive 是否能够跟随符号链接,不能的话可以用符号链接。
    符号链接需要管理员权限才能建立。
    610915518
    610915518
    Dec 3, 2020 via iPhone
    6
    写个定时脚本,触发 rsync
    610915518
    610915518
    Dec 3, 2020 via iPhone
    7
    rsync 有个参数可以忽略部分文件的同步
    KuroNekoFan
    KuroNekoFan
    Dec 3, 2020
    8
    package-lock 和 npm ci 值得你拥有
    KuroNekoFan
    KuroNekoFan
    Dec 3, 2020
    9
    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
    err1y
    Dec 4, 2020 via iPhone
    10
    git remote add
    将备份目录添加到 remote 中,然后提交到备份目录就可以了
    syficy
    syficy
    OP
    Dec 4, 2020
    11
    @Clarke @stevenkang @no1xsyzy @610915518 感谢工具推荐,syncthing 有在使用,其它的我会有空试试,但我更想从源头上解决 node_modules 这个问题。
    @leelz 因为这样每次代码改动就要重新复制,工作量增大了很多,做不到无感备份。
    @no1xsyzy @KuroNekoFan @err1y 感谢提供的思路 ,正在尝试中。
    leelz
    leelz
    Dec 4, 2020
    12
    @syficy 把你的那个脚本变成定时脚本就行吖
    hcsu
    hcsu
    Jan 13, 2021
    13
    我也在痛苦中...这有个用 rsync 的例子,但貌似只能单向,而且我用 rsync 同步了 15w 个文件,感觉有丢失,不太靠谱

    https://arshaw.com/exclude-node-modules-dropbox-google-drive
    ron0115
    ron0115
    Apr 9, 2021 via Android
    14
    想问楼主找到办法了吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2178 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 13:31 · PVG 21:31 · LAX 05:31 · JFK 08:31
    ♥ Do have faith in what you're doing.