前段时间因为笔记本不在身边,导致一些本地磁盘代码数据没法直接同步过来。于是就准备把这些年写的代码重新整理一下,谈谈常用备份手段以及我的最佳手段
备份手段
本地硬盘
大多数代码的存储方式,方便存取,我通常会新建一个驱动器 代码 (F:) 来将所有代码放在此处,可能还会自备一个移动硬盘来存储代码。
优点
无需网络,保存时间久,读写数据快。
缺点
数据同步不方便,难以做到跨端跨设备共享。万一硬盘出了点问题,代码将难以恢复。
网盘
例如某度网盘,Onedrive 等等,这类备份通常有一定的限制,例如下载限速严重,空间限制,保存期限等等,具体以实际使用网盘为例。
在某度网盘中,选择你的想备份的文件夹,是可以做到文件夹自动备份,但对于你项目中的依赖文件(例如 Node 的 node_module)那不小的空间也将备份,但有文件夹数量以及大小限制,如下图,这里只是简单一提,不作为备用手段。
优点
相比本地硬盘而已,网盘更易分享,在其他设备中只需要登录网盘账号或访问网盘所分享的链接。
缺点
有些免费的网盘,必然有一定的限制,例如空间限制,下载限制,远不如本地硬盘。如果不付费的话,体验效果堪忧。
代码托管平台
代码托管平台有很多,例如 Github、Gitee 等等,甚至可以自建一个像 GItLab 的代码托管平台。
优点
代码实时性强,并且基于 Git 版本管理工具可以很方便查看代码的历史操作,对于项目类的而言非常方便。
缺点
对于一些公有项目而言,一些私密信息(密码)不易于上传,在其他设备拉取代码就不存在这部分数据。同时对于大量代码就束手无策。
最佳实现
介绍完上面的几种代码备份手段,各自都有优缺点,至于如何选择就因人而异,这里就说说我是如何备份代码的。
全部代码
对于全部代码而言,肯定是多备份远优于不备份的。所以我通常会在本地电脑硬盘中备份两份代码,一份就正常放在固态硬盘上,另一份则放在机械硬盘,同时再备份一份代码在网盘上。
但机械硬盘与网盘的备份时间一致,都是定期或阶段性的备份(甚至可能会忘记备份),所以这种对代码的实时性要求不高,通常这类代码为学习代码以及工具类相关代码。
项目代码
对于项目代码而言,我是毫不犹豫的选择代码托管平台,使用到版本管理工具 Git,可以很好的查看代码的全部历史记录以及修改追踪能力。易于维护的同时,代码分享与同步也比网盘来的高效。设置好.gitignore 也不会将非必要的文件(依赖文件,打包后的文件,生产环境下的配置文件)上传上去。而 Github 便是我最好的选择,里面存放了或多或少的开源与私有项目,每次在其他设备上只需要登录 github,然后 clone 项目,便可开始 coding。
通常来说备份项目代码就已经足够了,毕竟这类代码往往会有一定的价值性。
但这还不够,因为放在别人的网站上的代码,万一人家网站停用,或者是你的代码有点风险给你代码仓库封了,那么这时候你想找回代码都无法找回!所以为了做好备份代码的万全准备,一般是推荐搭建私有 git 服务,然后自动同步 github 的账号下的所有仓库。
文章笔记备份
除了代码备份外,此外笔记也十分重要,毕竟有时候自己写的代码,自己甚至都不一定明白。对于文章数据以及笔记,我通常会使用云端协作平台,这类产品有 wolai,notion,语雀等等,不过我个人还是相对倾向于使用 wolai。可多端设备查看,实时编辑等等,体验还算 ok。
此外一些博客文章,就会同步在个人博客以及掘金上,当然博客的静态站点的代码仓库也是存放在Github上。
不必要的代码不要备份
其实对于很多代码都没备份的必要,例如我在安卓学习的时候,涉及到的刷机包(少说 2 个 g),以及各种 apk。完全可以直接备份其下载地址,而不是选择备份。
像临时用脚手架创建的工程文件或是下载别人的代码,这类通常就临时使用(甚至不会再打开第二次),完全没有必要备份理由。
请压缩后在备份
如果不压缩文件夹,备份时将逐个读取文件特别耗时,同时压缩完代码还可以节省一定的空间。也许在一开始备份时会相对麻烦,但在上传与下载以及多次备份时就一举两便。
最后
永远不要嫌备份麻烦,当你辛辛苦苦写的代码丢失时,那才是真正的麻烦。
养成定期备份代码的习惯,因为你永远不知道什么突发情况会导致代码丢失。