今日(きょう)(さわ)がしく(たわむ)れ生きる人々の漫画映画(まんがえいが)

Linux Backup Notes

起因:五毛一吉的固态出问题啦:

ATA Error Count: 32 (Note: The number of entries may be limited to the newest ones)

其中 31 个是今天出的错,都是 Uncorrectable error。 虽然现在系统还是可以正常食用, 只是 时不时会掉盘,出错:

find: ‘/home/...’: Input/output error

但总之还是把各种东西都备份一下。

密钥备份

不对称加密的私钥肯定是必须备份的。包括 GPG 以及 SSH 等的密钥。

GPG 密钥备份

备份介质的选择是挺重要的。 对于 GnuPG 密钥来说,我们可以选择用 U 盘、其它硬盘等等电子介质来保存,也可以……把私钥打印出来。

当然我们这里是普通地备份,但是有兴趣的话大家也可以了解一下 Paperkey (

备份、恢复方法

详情请见 https://serverfault.com/questions/86048/how-to-backup-gpg 。 我使用的是第二个回答 https://serverfault.com/a/1040984 。

总之:

$ gpg --list-secret-keys # 查看自己的公钥

$ gpg --export --armor 钥ID > 文件名.pub.asc
$ gpg --export-secret-keys --armor 钥ID > 文件名.priv.asc
$ gpg --export-secret-subkeys --armor 钥ID > 文件名.subkeys.asc
$ # 上面的步骤对每一个要备份的密钥都进行一遍

$ gpg --export-ownertrust > ownertrust.txt

恢复的话也是按答案里的来。

此外,可以考虑把 ~/.gnupg/ 里的一些文件也都备份下来。

SSH 密钥保存

我是直接把 ~/.ssh/ 整个目录复制了下来。

杂项

Git Stash 备份

Git 能 commit 的当然可以 commit 然后找个地方 push 上去。 只是本地的,没有 remote 端的话那只能整个项目复制保存了。

如果有 remote 端,但是工作到一半不方便 push 上去保存,那么可以参考 Backup Git Stash 这里来保存。

基本上是创建 stash 后用 git stash show -p 来获取 diff 信息,从而只保存 stash 里的信息。其余的 commit 只要确保 push 上去了就可以了。

Rsync

Rsync 比起普通的复制粘贴来说更能实现备份的功能。

$ rsync -P -r 待备份目录 备份放置目录
$ rsync -P -r 待备份目录/ 备份放置目录

注意上面两种是不同的用法。前者最终会复制到 备份放置目录/待备份目录 ,而后者则会将 待备份目录/A文件夹 直接复制到 备份放置目录/A文件夹

-P 选项显示每个文件的进度。 -r 则是递归复制,否则它不会复制下层目录的内容。

可参考 https://wiki.archlinux.org/title/Rsync_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 。

单纯是备忘录

  • ~/.local 看了吗?我个人会往 ~/.local/bin 之类的地方放自己的脚本

  • ~/.config 看了吗?各种软件的配置,也许会有你想要备份的。例如: - VS Code: ~/.config/Code - OSS/User/settings.json

  • Element 备份了吗?密钥丢了就没有了喔。你至少要有一个另外的 Verified device

  • 输入法字典备份了吗?

  • 跑去 https://wiki.archlinux.org/title/System_maintenance#Backup 再看一遍? - List of installed packages - Configuration file: 如果用着 Etckeeper 的话可以直接找个地方 sudo git clone /etc/.git

  • HexChat 或者其它的 IRC 登录信息备份了吗?(我是记不住的……)

  • Jami 备份了吗?

  • 虚拟机备份了吗?

评论