Google Driver 传输类似 node_modules 这样的文件太慢
一直在用 google 云,最近把 hexo 生成的博客放在了 google 云里,传输小文件且数量特别多的是很慢;
网上给出了一种解决方法,就是把文件夹压缩,上传到 google 云后在线解压,然后再同步到本地,速度可以快一倍,我试了一次,结果里面所有中文标题的文件都乱码了
一直在用 google 云,最近把 hexo 生成的博客放在了 google 云里,传输小文件且数量特别多的是很慢;
网上给出了一种解决方法,就是把文件夹压缩,上传到 google 云后在线解压,然后再同步到本地,速度可以快一倍,我试了一次,结果里面所有中文标题的文件都乱码了
就类似这样: https://s1.ax1x.com/2020/08/27/d4hbpd.png
如果非要传,可以试试 yarn 的 –pnp 模式,模块会变成 zip 包,而不是散的文件。传起来快
“90% 的磁带浪费在了 node_modules”
我就是这么做的,这是我的 .gitignore 文件:
db.json
*.log
public/
.deploy/
node_modules/
id_rsa
> 如果模块变成 zip 包了,hexo 还能用吗
能用,可以去了解一下 yarn2 他们做了一个基于 zip 的虚拟文件系统。其实之前 yarn1 的时候也有 pnp 模式,类似 composer 的加载方案。yarn2 才加入了 zip 的功能,目标就是把依赖同时上传能更好的控制,只不过我没有试过,好像 hexo-cli 应该不支持 yarn2 https://github.com/hexojs/hexo-cli/pull/218 反正感觉开源社区对 yarn2 不怎么支持,尤雨溪好像对 yarn2 也是消极态度,他说这个命名不好,因为变化太大了。我觉得以后 yarn2 应该和 pnpm 差不多的状态吧。
真的恶心!
真的恶心!
真的恶心!
不说备份到网盘,就算是备份到本地 nas 都很坑好么,几百 MB 的文件夹,动辄上百万的文件,坑死人了。
不备份吧,又要专门去修改备份脚本设置 exclude 规则,有时并不是那么方便。
备份吧,每次看到日志里面 node_modules 刷屏,血压就骤升。
其它编程语言很少见这么坑的。
另外如果是实时同步,B 电脑刚删好,生成完毕,此时 A 电脑刚好改完代码,同步开启,然后发现 node_modules 被改了,emmmmmm,然后需要把 node_modules 重新生成,但是因为是实时同步,所以很快 B 电脑会发现他的 node_modules 不能用了,于是。。。。。。。
什么?你说你只在一台电脑上用?那你为什么还要备份 node_modules ?
什么?多电脑没有不能用的问题,那恭喜你啊,万一以后遇到你可以考虑一下是不是 node_modules 不通用问题。
你这样备份 node_modules 本身也不合理,因为有些 node 包会是基于当前的系统环境生成的,比如 node-sass 这些,你同步过去以后也不一定能用
不过话说回来,零碎小文件放哪家上传都慢……
不知道有没有人有同样的感觉
传的时候 zip ,用的时候解压
node_modules 是有 native 的
virtualenv 碰上过 WSL 内外不兼容的情况
ruby 环境有多少 native,吓死人,Github Pages 自动安装依赖,三个里面有两个是 native,全部安装下来甚至缺几个包需要单独安装 ( ruby-dev zlib1g-dev )……
老哥们,写了个脚本算是最终解决方案吧,先生成渲染 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 [email protected]:/root/
echo “解压云端文件”
ssh -i “C:\Users\ym\.ssh\id_rsa” -o “StrictHostKeyChecking=no” [email protected] ‘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 *