当备份工具遇到 node_modules,真的没有优雅的解决方案吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
syficy
V2EX    程序员

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

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

    前端开发,想备份个人文件到外置硬盘和云端,但是 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     Solana     2784 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 145ms UTC 14:39 PVG 22:39 LAX 07:39 JFK 10:39
    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