为什么选择 restic,主要基于以下几点考虑:
首先,创立一个备份仓库,假如结合 rclone 使用,可以指定一个挂在为远程服务器的位置,没有的话,可以使用本地路径作为备份仓库。
restic init --repo ./backup
执行此命令后,会让你输入备份仓库密码,注意如它所说,记住此密码不要丢失。这个命令的执行可能需要等待1分钟左右,对于 NFS 文件系统,可能需要的时间更长,等就是了。
enter password for new repository:enter password again:created restic repository a6801fab57 at ./backupPlease note that knowledge of your password is required to accessthe repository. Losing your password means that your data isirrecoverably lost.
增加一个本地文件夹到备份仓库,你也可以继续增加其它的文件夹。
restic --repo ./backup backup ./mywork
同样,对于访问备份仓库,需要密码访问,而后这个过程也会比较长,由于都是基于文件哈希值作为备份版本的依据,此时命令会提醒:
enter password for repository:repository a6801fab opened successfully, password is correctFiles: 1 new, 0 changed, 0 unmodifiedDirs: 0 new, 0 changed, 0 unmodifiedAdded to the repo: 319 Bprocessed 1 files, 19 B in 0:08snapshot 8c4b2b4a saved
最后的一行,snapshot 8c4b2b4a saved 中的8位字符就是本次的备份版本号,这和 Git 十分相似,用过的大家都知道,以后无论是删除备份还是复原备份,都是基于这个版本号。
查看备份库中的所有备份快照:
restic -r ./backup snapshots
在恢复备份之前,我们都会查看一下快照,防止恢复了错误的版本,可以使用上面的命令。
enter password for repository:repository a6801fab opened successfully, password is correctID Date Host Tags Directory----------------------------------------------------------------------8c4b2b4a 2018-10-15 16:59:48 DELL-PC E:\Temps\mywork----------------------------------------------------------------------1 snapshots
在以上的表格中,ID 就是备份的版本号,Date 是备份快照创立日期, HOST 是备份用户端的主机名,Tags 是标签,在我们这个演示中没有用到,Directory 是用户端原始备份目录,这是由于它可以支持多个用户端,多个仓库的备份, restic 更像是一个集中式的版本备份系统。
接下来是如何复原一个备份,十分简单,指定 restore 哪一个版本号,以及 target 指向一个恢复路径,就会完成备份的复原。
restic -r ./backup restore 8c4b2b4a --target ./mywork_restore