一直在用 google 云,最近把 hexo 生成的博客放在了 google 云里,传输小文件且数量特别多的是很慢;
网上给出了一种解决方法,就是把文件夹压缩,上传到 google 云后在线解压,然后再同步到本地,速度可以快一倍,我试了一次,结果里面所有中文标题的文件都乱码了
1
ysc3839 2020-08-27 19:23:23 +08:00 via Android
为什么要传输 node_modules ?
|
2
ymlog OP @ysc3839 因为 hexo 放在了 Google 中备份,hexo 写博客用的,会经常用到而且用的时候需要 node_modules,如果把 node_modules 删掉,下次还得 npm install 装回来,
就类似这样: https://s1.ax1x.com/2020/08/27/d4hbpd.png |
3
bokix 2020-08-27 20:02:21 +08:00
我是不是可以把我电脑上的 maven 库也放在 Google 中备份一下??疯了
|
4
Lxxyx 2020-08-27 20:07:11 +08:00
觉得 npm 慢的话,可以试试看 cnpm 。。
|
5
vcfvct 2020-08-27 20:35:00 +08:00
Backup package.json 就够了吧, 要非常 consistent 的话再加个 package-lock.json, 新的环境下 npm install 应该比你从 Google Drive 上拉下来快吧.
|
6
zhuweiyou 2020-08-27 20:43:04 +08:00 14
传 node_modules 本身就是个错误的做法。
如果非要传,可以试试 yarn 的 --pnp 模式,模块会变成 zip 包,而不是散的文件。传起来快 |
7
Cielsky 2020-08-27 20:46:46 +08:00 via Android
hexo 了,直接传仓库里不就行了,然后用 ci 自己生成博客文件
|
8
PerFectTime 2020-08-27 22:47:12 +08:00
node_modules 里面千千万万个文件, 就是个大黑洞
每次用的时候 install 一下就好了, 没必要备份黑洞 |
9
oneisall8955 2020-08-27 22:56:50 +08:00 via Android
这跟 git/svn 上传项目的 node_modules/.class/bundle.js 有什么意义
|
11
masker 2020-08-27 23:07:34 +08:00 via Android 2
今日份神操作
|
13
ymlog OP @PerFectTime 用的次数太频繁了,基本每天一次
|
14
pascalsun 2020-08-27 23:50:27 +08:00
.........
|
15
ysc3839 2020-08-28 00:31:27 +08:00 via Android
@ymlog #12 我的做法是 Hexo 整个仓库放在 GitHub 上,通过 GitHub Actions,每次 push 的时候生成网页文件然后提交到网站。
|
16
noe132 2020-08-28 00:38:18 +08:00 14
github 北极埋了一堆开源代码
“90% 的磁带浪费在了 node_modules” |
17
Hyoban 2020-08-28 00:41:48 +08:00
只放 source 文件夹就够了
|
18
baobao1270 2020-08-28 00:50:47 +08:00
建议:配置好 gitignore,把 hexo 文件上传到 GitHub 的 Private 仓库。如果需要多地备份,可以写一个脚本,推送提交后自动转存 Google 。
我就是这么做的,这是我的 .gitignore 文件: db.json *.log public/ .deploy/ node_modules/ id_rsa |
19
jiangzm 2020-08-28 00:55:33 +08:00
@ymlog 每次用的时候 npm install 不是很正常的操作吗, 网络传输 node_modules 本身就是错误的想法。另外还有.git 文件夹也切记不要上传,下载起来很快因为是打包下载再解压的,如果文件夹同步也会异常的慢零碎文件太多了
|
20
hlwjia 2020-08-28 01:05:49 +08:00
有时看到有这样的操作,我都不知道怪谁
|
21
ericgui 2020-08-28 01:16:52 +08:00
打包之后再传呗
|
22
xmumiffy 2020-08-28 01:21:40 +08:00 via Android
真要传那就那 rclone 开几百个 transfers 和 checkers
|
23
xw900812 2020-08-28 01:58:26 +08:00
把 `npm install` 的过程放到 ci cd pipeline 中去,直接传是错误的做法哦。
|
24
starsyork 2020-08-28 02:50:51 +08:00 via iPhone
其实我想问,有啥方法可以让网盘自动不备份 node_mudoles 嘛,反正 google drive 我没找到设置
|
25
skies457 2020-08-28 02:51:54 +08:00
目前用过的网盘只有 Dropbox 能高性能地储存 node_modules 。本来理想的情况就是把网盘当驱动器用,跨设备 1:1 同步和备份工作文件,难道在网盘里每创建一个前端项目都要在网盘设置里面 ignore 掉、然后在所有设备上执行 npm install ?这不是花钱买罪受嘛
|
26
linliting45 2020-08-28 04:35:44 +08:00 via iPhone
@skies457 这种不应该用 github ?
|
27
lslqtz 2020-08-28 04:49:32 +08:00 1
网盘我觉得明明是当备份盘用的,没想到居然会有人当驱动器。。。
|
28
vk42 2020-08-28 05:17:36 +08:00
上面的吐槽内容就不重复了,发现没人提压缩包乱码问题,盲猜你是在 Win 下压的 zip 包。为了避这个坑一般 Windows 用户打的 zip 包全都打回去重打……
|
29
Rhinecho 2020-08-28 06:47:16 +08:00 via iPhone 2
|
30
houzhenhong 2020-08-28 07:35:06 +08:00 via Android
@ymlog
> 如果模块变成 zip 包了,hexo 还能用吗 能用,可以去了解一下 yarn2 他们做了一个基于 zip 的虚拟文件系统。其实之前 yarn1 的时候也有 pnp 模式,类似 composer 的加载方案。yarn2 才加入了 zip 的功能,目标就是把依赖同时上传能更好的控制,只不过我没有试过,好像 hexo-cli 应该不支持 yarn2 https://github.com/hexojs/hexo-cli/pull/218 反正感觉开源社区对 yarn2 不怎么支持,尤雨溪好像对 yarn2 也是消极态度,他说这个命名不好,因为变化太大了。我觉得以后 yarn2 应该和 pnpm 差不多的状态吧。 |
31
houzhenhong 2020-08-28 07:40:49 +08:00 via Android
偏个楼我看到刚才楼上的 pull 的讨论里面有一句话,`That will be complicated & slow, since yarn has no programmatic API.` 不知道以后 yarn 的未来是怎么样呀。
|
32
Osk 2020-08-28 08:17:28 +08:00 via Android
其实我觉得并不能全怪楼主神操作,js 的生态中,尤其是 node_modules 这个玩意儿是真的恶心。
真的恶心! 真的恶心! 真的恶心! 不说备份到网盘,就算是备份到本地 nas 都很坑好么,几百 MB 的文件夹,动辄上百万的文件,坑死人了。 不备份吧,又要专门去修改备份脚本设置 exclude 规则,有时并不是那么方便。 备份吧,每次看到日志里面 node_modules 刷屏,血压就骤升。 其它编程语言很少见这么坑的。 |
33
shoujiaxin 2020-08-28 08:51:12 +08:00 via iPhone
我有一个问题,既然使用这么频繁,为什么要把本地的 node_modules 删掉呢?
另外,使用频繁的话用 CI 就更方便了吧 |
34
guanhui07 2020-08-28 08:54:42 +08:00
node_modules 文件目录不要传
|
36
ymlog OP @shoujiaxin 没有说把本地 node_modules 删掉,只是放在到 google 网盘,还是要用的
|
37
ysc3839 2020-08-28 09:05:05 +08:00 via Android
|
39
ymlog OP @vcfvct 可以这样,但是如果 node_modules 目录在 hexo/node_modules 这样的目录结构下,GoogleDriver 备份 hexo,不能 ignore node_modules,不像 git 那样好用
|
40
ymlog OP @oneisall8955 因为本地会经常用到 node_modules 里的代码渲染 markdown,如果是 git 上传的话,可以理解为上传之后,可以不再用到了吗
|
42
ymlog OP @houzhenhong 好的,我尝试一下,非常感谢
|
44
Augi 2020-08-28 09:14:13 +08:00 via iPhone
不应该传输 node_modules
|
45
kekxv 2020-08-28 09:17:24 +08:00 1
@ymlog 劝你不要传 node_modules 处理因为小文件太多,还因为 node_modules 并不通用,你在 A 电脑上生成的 node_modules 很有可能在 B 电脑上无法使用,B 电脑还是要把 node_modules 删掉重新生成 node_modules 。
然后问题就来了,这时候 B 电脑又把 node_modules 上传了,然后 A 电脑同步过来了,然后。。。。。。。。 另外如果是实时同步,B 电脑刚删好,生成完毕,此时 A 电脑刚好改完代码,同步开启,然后发现 node_modules 被改了,emmmmmm,然后需要把 node_modules 重新生成,但是因为是实时同步,所以很快 B 电脑会发现他的 node_modules 不能用了,于是。。。。。。。 什么?你说你只在一台电脑上用?那你为什么还要备份 node_modules ? 什么?多电脑没有不能用的问题,那恭喜你啊,万一以后遇到你可以考虑一下是不是 node_modules 不通用问题。 |
46
12101111 2020-08-28 09:24:03 +08:00
可以看一下 hugo, zola 这种单文件生成器,没有 node_modules 这种问题
|
47
Uyuhz 2020-08-28 09:24:05 +08:00
我都是 jenkins 自己去 npm install...
|
48
KuroNekoFan 2020-08-28 09:49:34 +08:00
我觉得比较好的做法是把 package.lock 也提交,然后 npm ci,把 node_modules 加到 repo 里实属弱智
|
49
KuroNekoFan 2020-08-28 09:52:27 +08:00
如果觉得每个项目一份 node_modules 很讨厌可以考虑 pnpm,当然我觉得每个项目一份 npm 其实也没什么问题
|
50
supuwoerc 2020-08-28 10:03:55 +08:00
不管啥环境传这种超多层级的文件都慢吧,为啥不直接保存 package.json 再安装来的直接 =。=
|
51
MrTreasure 2020-08-28 10:37:39 +08:00
其实是根本找不到需要手动传输 node_modules 的必要性,不太确定什么场景下是你只传输 package.json,然后在服务器端 npm install 不能解决的。即使像我一样觉得每次不同项目都要拉新的 node_modules,也可以使用 yarn 来安装
你这样备份 node_modules 本身也不合理,因为有些 node 包会是基于当前的系统环境生成的,比如 node-sass 这些,你同步过去以后也不一定能用 |
52
jaylee4869 2020-08-28 10:46:22 +08:00
推荐你用 vercel 或 netlify 。可以 用自己的域名 解析。
|
53
ymlog OP @shoujiaxin Jenkins 构建流水线吗,买的轻量级服务器资源带不动,自己用的又是 windows
@ysc3839 可以这样,但是如果 node_modules 目录在 hexo/node_modules 这样的目录结构下,GoogleDriver 备份 hexo,不能 ignore node_modules,不像 git 那样好用 |
54
ymlog OP @KuroNekoFan 麻烦看清说明,我是本地也要用
|
55
krixaar 2020-08-28 11:40:30 +08:00 1
Google Drive 目前似乎不能 follow 符号链接,这样就有了个非常简单的处理方法,把 node_modules 挪出去,然后 mklink 回来,既不影响现有的工程(相当于路径没变),又不影响备份(相当于手动 ignore 了)。
另外这种事儿用 github 开个私有 repo,然后用 github actions 从 npm install 到部署自己服务器上都能直接搞定吧? |
56
Sharuru 2020-08-28 11:46:43 +08:00
我琢磨着网盘人家爱咋用咋用。
不过话说回来,零碎小文件放哪家上传都慢…… |
58
vanxy 2020-08-28 12:16:42 +08:00 1
想到这个世界上有人在用网盘同步 node_modules, 有人把 node_modules 传到 git 。就很难受...
不知道有没有人有同样的感觉 |
59
maomaomao001 2020-08-28 12:30:46 +08:00
|
60
charlie21 2020-08-28 13:04:02 +08:00
这是一种对于资源的浪费
|
61
mgrddsj 2020-08-28 13:16:42 +08:00 via Android
Google 搜索 Google Backup and Sync ignore …,就会出现候选 "ignore node_modules" 了。基本上都是推荐使用第三方 Google Drive 客户端把它 exclude 掉,或者改用 Git 。
|
63
skies457 2020-08-28 13:44:41 +08:00
@linliting45 #25 存档和发布当然用 github (也不应该上传 node_modules ),但是工作环境可以用网盘同步呀
|
65
skies457 2020-08-28 13:48:24 +08:00
@ysc3839 #36 每次 package.json 变动的时候都要在所有设备上重新 npm install 呀。node_modules 上传太久是网盘的错,不是用户的错
|
67
ysc3839 2020-08-28 13:55:13 +08:00 via Android
@skies457 确实是有变动后需要手动更新的问题,不过大概可以通过 IDE 或者其他软件解决。比如用 Git 同步的话,就可以用 git 的 hook 功能。
node_modules 上传慢是网盘的锅,但是在网盘本身不能解决这个问题,用户又一定要用这个网盘的情况下,只能自己忍受不爽了。 |
68
no1xsyzy 2020-08-28 15:17:47 +08:00
@hlwjia #20 怪 deno 出得太慢(
node_modules 是有 native 的 virtualenv 碰上过 WSL 内外不兼容的情况 ruby 环境有多少 native,吓死人,Github Pages 自动安装依赖,三个里面有两个是 native,全部安装下来甚至缺几个包需要单独安装 ( ruby-dev zlib1g-dev )…… |
69
justin2018 2020-08-28 15:22:11 +08:00
@Osk 确实挺坑 上次 dropbox 同步忘记排除了 同步了几千个文件 而且 很慢~~~
|
70
HangoX 2020-08-28 15:38:20 +08:00
不太明白这个东西为什么一定要上传,hexo 配置好之后这个东西其实一般是固定大小的。
如果你在多个设备都有使用这个 hexo,每个地方都初始化一遍其实还能接受,你是因为每次都用新设备写文章吗?、 如果不是,弄个快捷运行的东西双击直接执行 npm 一次,这个成本应该会更低一点 |
71
ymlog OP @HangoX 不想 markdown 文件丢失,于是就同步了 hexo 的目录,但是 node_modules 不能排除在外,Google Driver 应该没有.git ignore 的功能
|
72
hst001 2020-08-28 15:53:09 +08:00
我的天,你居然往别人的服务器传黑洞!
|
74
littlewing 2020-08-28 17:19:51 +08:00
下次把 js 源码,linux 源码也传一份
|
75
NoUltimate 2020-08-28 17:32:44 +08:00
服务器跑不动可以试试 azure pipline,私有仓库有时间限制,公共仓库好像免费,不过我都是 azure 打包成 docker 镜像然后自己服务器去拉下来
|
76
ymlog OP @krixaar 以前用过软链接和硬链接,感觉不太喜欢,技术上可行,但是本该是一个目录的东西放在不同地方,强迫症难受,现在打算用 yarn,比 npm 快
|
77
ymlog OP @12101111 @Augi @Cielsky @HangoX @Hyoban @KuroNekoFan @Lxxyx @MrTreasure @NoUltimate @Osk
老哥们,写了个脚本算是最终解决方案吧,先生成渲染 markdown 的环境、用完了删除,有兴趣的可以看一下: (如果觉得这里看代码不太行,可以看这个博客 8 月 28 号的更新: http://code.ymlog.cn/post/687d0838.html ) 其实刚开始是很反对把 node_modules 删掉的,后来因为这个文件夹太恶心,很多 v2exr 老哥又都建议我删掉,就直接删了,每次渲染的时候再装回来 # 修改时间:2020/8/25 # Description: # 0 、yarn 安装 node_modules 模块 # 1 、将本地 hexo 的 markdown 渲染成 html 放到 public 目录 # 2 、打包 public 目录并上传到云端解压 # 3 、在云端解压到 /blog/public/ ——该路径是 nginx 的 root 路径 # 4 、删除 public 、node_modules,删除 7 天前的备份文件 # 5 、备份当前 hexo 目录 echo "生成 node_modules" yarn install echo "generate public" hexo g echo "删除 node_modules" rm -rf ./node_modules echo "打包 public 目录" tar -zcf public.tar.gz public echo "上传 public 目录" scp -i "C:\\Users\\ym\\.ssh\\id_rsa" -o "StrictHostKeyChecking=no" public.tar.gz root@huawei:/root/ echo "解压云端文件" ssh -i "C:\\Users\\ym\\.ssh\\id_rsa" -o "StrictHostKeyChecking=no" root@huawei 'rm -rf /blog/public && tar -zxf /root/public.tar.gz -C /blog/' echo "清除 public 目录" rm -rf public rm -fr public.tar.gz echo "删除 7 天前的备份" find ../backup/ -name hexo_backup_* -ctime +15 -exec rm -rf {} \; echo "备份当前 hexo 目录" tar -zcf ../backup/hexo_backup_$(date '+%Y-%m-%d').tar.gz * |
78
ymlog OP 那个是删除 15 天前的备份,习惯性的写成了 7 天
|
81
frantic 2020-08-29 10:35:46 +08:00
想起来以前我代码仓库都放到 Document 当中,iCloud 自动同步的时候经常卡死
|
82
wd 2020-08-29 16:32:40 +08:00 via iPhone
用 Hugo 吧
|