前端开发,想备份个人文件到外置硬盘和云端,但是 windows 下常见的文件备份相关工具(如 OneDrive 、windows 自带的文件备份工具等)没有提供类似.gitignore 的配置选择,因此遇到 node_modules 这种几万个小文件的文件夹,都会消耗大量的系统资源。
当然我知道可以去选择下载别的工具来支持跳过 node_modules 进行文件备份,但是当我要为这 node_modules 付出大量妥协的代价的时候,不得不去思考 node_modules 存在的价值。
有一说一,微软自带的文件备份以及 OneDrive 都挺好用的,也许有人说这些文件工具不是用来备份代码的,备份代码得用 git,我现在确实是把代码文件和个人文件割裂开来采取不同的备份方式,但是如果能统一就实在是太棒了。若不是 node_modules 的存在,我可以做到个人文件在本地仓库盘+OneDrive 云端盘无感备份。万恶的 node_modules 。
还有一种解决方案就是写个脚本把所有项目的 node_modules 删掉,每次用项目的时候再 npm install,还是太麻烦。
不知各位有无别的优雅解决方案。
1
Clarke 2020-12-03 19:37:31 +08:00 via Android
用 goodsync 可以排除任意名字的文件夹
|
2
leelz 2020-12-03 19:38:51 +08:00
为啥要删掉,搞一个文件夹放 OneDrive,将要备份的文件复制过去,然后过滤掉 node_modules 不就行了。
|
3
stevenkang 2020-12-03 19:47:14 +08:00
mklink /D node_modules D:/node_modules 将目录映射到别的位置?
|
4
knives 2020-12-03 21:07:06 +08:00
感觉无解。用过 Syncthing 同步前端代码,走的也是忽略特定目录的路子。
|
5
no1xsyzy 2020-12-03 21:39:13 +08:00
按我拍脑袋觉得更可能符合你的需求的顺序:
1. deno 2. 用 OneDrive 的目录作为 git remote ( git remote 可以设置为本地另一路径。不清楚是否可以设置为压缩包,如果可以那是最好的。) 3. 用其他能够进行 ignore 的同步方案,比如 nextcloud 猜测可能可用的:node 和 git 都已知能够跟随符号链接 看看 OneDrive 是否能够跟随符号链接,不能的话可以用符号链接。 符号链接需要管理员权限才能建立。 |
6
610915518 2020-12-03 22:00:13 +08:00 via iPhone
写个定时脚本,触发 rsync
|
7
610915518 2020-12-03 22:00:52 +08:00 via iPhone
rsync 有个参数可以忽略部分文件的同步
|
8
KuroNekoFan 2020-12-03 22:28:40 +08:00
package-lock 和 npm ci 值得你拥有
|
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. ``` |
10
err1y 2020-12-04 08:42:00 +08:00 via iPhone
git remote add
将备份目录添加到 remote 中,然后提交到备份目录就可以了 |
11
syficy OP @Clarke @stevenkang @no1xsyzy @610915518 感谢工具推荐,syncthing 有在使用,其它的我会有空试试,但我更想从源头上解决 node_modules 这个问题。
@leelz 因为这样每次代码改动就要重新复制,工作量增大了很多,做不到无感备份。 @no1xsyzy @KuroNekoFan @err1y 感谢提供的思路 ,正在尝试中。 |
13
hcsu 2021-01-13 22:19:06 +08:00
我也在痛苦中...这有个用 rsync 的例子,但貌似只能单向,而且我用 rsync 同步了 15w 个文件,感觉有丢失,不太靠谱
https://arshaw.com/exclude-node-modules-dropbox-google-drive |
14
ron0115 2021-04-09 08:41:00 +08:00 via Android
想问楼主找到办法了吗
|