今天晚上,由于某种内核恐慌,我不得不硬关闭我的计算机。
当我重新启动时,我注意到我的文件~/.ssh/id_rsa
已被替换为空文件。
重新启动到 USB 并fsck
在我的主分区上运行报告文件系统状况良好。
仅此一点并不是问题。我可以访问原始密钥。但是,我担心其他文件可能也被类似地截断。
我的最后一次备份deja-dup
是三天前使用的,因此我可以执行完整回滚,但我宁愿只询问deja-dup
自那时以来哪些文件发生了更改并查找“可疑”文件。
这似乎正是的目的duplicity verify
,因此在浏览了一些手册页之后,我尝试:
duplicity verify --verbosity 4 --no-encryption file:///path/to/backup/ /home/${USER}
它在没有报告更改的情况下运行完成。至少,我预计我的文件~/.ssh/id_rsa
会被检测到,但我添加、删除和更改了其他文件。
我的下一次尝试是相同的,但带有标志--compare-data
:
duplicity verify --verbosity 4 --no-encryption file:///path/to/backup/ /home/${USER}
这似乎报告我的主文件夹中的每个文件都是新的,开头如下:
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Fri Dec 15 11:43:22 2017
Difference found: File . has permissions 1000:1001 700, expected 0:0 555
Difference found: New file .AndroidStudio2.3
Difference found: New file .AndroidStudio2.3/config
Difference found: New file .AndroidStudio2.3/config/inspection
Difference found: New file .AndroidStudio2.3/config/inspection/Default.xml
我已经安装 Android Studio 几个月了,所以它肯定在我三天前的备份中,并且ls
报告Default.xml
仍然存在并且长度为 108 字节。
作为最后的努力,我将目标目录更改为/
,因为使用时这似乎是根目录duplicity list-current-files
,这需要添加一些正则表达式来限制口是心非,只考虑我的主文件夹:
duplicity verify --verbosity 4 --compare-data --no-encryption --include-regexp ".*home/${USER}/\.ssh.*" --exclude-regexp ".*" file:///path/to/backup/ /
这产生了有趣的效果,报告我的主文件夹不存在:
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Fri Dec 15 11:43:22 2017
Difference found: File home is missing
Difference found: File home/${USER} is missing
Difference found: File home/${USER}/.AndroidStudio2.3 is missing
Difference found: File home/${USER}/.AndroidStudio2.3/config is missing
Difference found: File home/${USER}/.AndroidStudio2.3/config/inspection is missing
Difference found: File home/${USER}/.AndroidStudio2.3/config/inspection/Default.xml is missing
在这一点上,我当然只是误解了如何使用 duplicity。我如何验证生成的备份deja-dup
?
duplicity list-current-files
有输出开始:
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Fri Dec 15 11:43:22 2017
Tue Feb 6 19:36:56 2018 .
Wed Aug 2 17:32:09 2017 home
Tue Feb 6 00:38:20 2018 home/${USER}
Sat May 13 18:49:24 2017 home/${USER}/.AndroidStudio2.3
Thu Jun 22 19:42:14 2017 home/${USER}/.AndroidStudio2.3/config
Sat May 13 18:57:45 2017 home/${USER}/.AndroidStudio2.3/config/inspection
Sat May 13 18:57:45 2017 home/${USER}/.AndroidStudio2.3/config/inspection/Default.xml
答案1
@ede 和我同时找到了相同的解决方案,就我而言在口是心非的邮件列表上
口是心非验证需要该--compare-data
标志才能验证磁盘上的文件,并且需要该--file-to-restore
标志才能查看正确的目录,因此解决我的问题的最终命令是:
duplicity verify --verbosity 4 --compare-data --file-to-restore=/home/${USER} --no-encryption file:///path/to/backup/ /home/${USER}/
不幸的是,这仍然没有检测到~/.ssh/id_rsa
损坏。同时,尝试从备份恢复时恢复了一个 0 字节的文件...很可能几周前我的文件发生了一些事情。