绿色设计网站,基本seo,福州 网站建设 医疗,一键优化大师本文虽然使用“抢救”一词#xff0c;但是运气比较好#xff0c;远没有达到访问和修改底层的信息来抢救的地步。如果你是需要通过访问和修改底层信息来抢救数据#xff0c;建议阅读刘伟的《数据恢复技术深度揭秘#xff08;第二版#xff09;》或者寻找专业人士的帮助。 《…本文虽然使用“抢救”一词但是运气比较好远没有达到访问和修改底层的信息来抢救的地步。如果你是需要通过访问和修改底层信息来抢救数据建议阅读刘伟的《数据恢复技术深度揭秘第二版》或者寻找专业人士的帮助。 《数据恢复技术深度揭秘第二版》并没有提及如何修复现在 macOS 使用的 APFS最新只有 HFS。APFS 的结构要复杂一些但是也是个尝试。 问题的前因后果
之前买过一块 3TB 的 SMR 盘用来专门时间机器备份但是有次将其接到显示器上的 USB 接口备份的时候显示器黑屏连接断开了再次打开之后无法连接等待相当长时间自检修复之后弹出窗口显示“无法修复磁盘”需要赶快抢救这些文件。
我当时要崩溃了因为我的时间机器一直是手动备份的所以从 2019 年一直到 2022 年四年的备份都在其中这要是没了挺烦的。
好在这时候是可以正常访问硬盘内容的只是整个硬盘都是只读的无法再次使用时间机器来操作这个硬盘。 其中我看到了那个被打断的备份下图高亮 这部分也没什么有用的内容所以后面也不需要复制他们由于现在是整个硬盘都是只读也没法删除。
跳过系统的修复
上面看到了系统的修复是没啥用的但是每次插上这个硬盘之后需要很长时间才能看到卷宗。这是因为系统发现这个卷宗出现问题了在使用fsck尝试修复。如果此时你在活动监视器中搜索fsck可以看到如下_hfs后缀表示修复的文件系统是 HFS 格式的 这时候强行退出这个进程就会弹出提示窗口然后就能看到卷宗内容了。命令行使用PS -A grep fsck搜索然后kill杀死进程即可
这是为了节约时间。因为此时我们已经确定文件系统出现了问题我们需要尽快将数据导出。有的时候fsck尝试修复只需要几分钟、十几分钟就会弹出修复失败的信息但是有些时候会达到十几个小时我遇到过甚至数天我在论坛看有人遇到过。
诊断问题
首先得确定到底是硬盘坏了还是文件系统坏了。前者的话抢救完数据就不能用了而且得减少操作防止进一步恶化。后者的话格式化就好了也不用担心操作太多导致更大的问题。
我知道很多人由于 SMR 结构的问题会直接认为硬盘损坏但是正如我上面所说我基本没有复写操作都是增量写入。这也是 SMR 的适合使用场景一次写入多次读取尽量别再次复盖写入所以不能简单地认为就是硬盘的问题。
我们在 Linux 或 Windows 上查看到这个硬盘虽然无法读取但是我们只需要检查本文使用 Windows。 为什么不使用 Mac 来查看和检测 这是因为 macOS 不支持对外部硬盘查看 SMART 信息你可以使用 smartmontools 中的smartctl试一下这点在 smartmontools 官方问答中也有列出 OSX - External USB / FireWire drive diagnostics support机翻如下 连接上之后使用查看 SMART 信息的工具以及其他一些检查工具DiskInfo 等等看看硬盘有没有问题。
好消息是硬盘没坏。加上能正常访问用测速软件发现速度也没下降。也就是说只有文件系统出现了问题这样只要抢救完文件就没有什么损失了。
抢救数据
根据上面的情况个人猜测是时间机器相关的结构出现了问题而不是 EFI 分区。因为是可以正常访问的打开一些文件也没有问题不然连硬盘卷宗都看不到。
由于整个硬盘是只读的无法使用时间机器迁移到新硬盘所以只能复制需要的内容。
接下来就是抢救这些文件了。
一些不能复制的文件和目录
如果你直接拖Backups.backupdb到新的硬盘中会发现弹出 这并不是因为目标硬盘是 APFS和时间机器的 HFS 不一样而是有一些隐藏文件作为时间机器的文件系统。所以同时按下“Command Shift .”三个键来显示所有的隐藏文件 这里高亮的.RecoverySets目录是用来恢复 Mac 的。当然并不是只有这一个目录或者文件用来组成时间机器的文件系统所以这时候也不要直接拖拽最下面没被隐藏的文件夹。
需要复制的文件和目录
实际需要复制的是下面这两个目录中的内容 第一个目录下存放的是系统的东西比如说系统自带的应用程序等等第二个目录下则存放的是用户的数据和应用程序。
只复制一部分文件
如果你只需要一些数据文件那么复制第二个目录下的内容即可。Macintosh HD和Macintosh HD - 数据都对应的是系统的根目录/前者存放的是系统相关的后者是用户和使用相关的可以想象一下将真正的根目录拆分成两部分。 这点与实际系统上的结构完全不同因为实际的系统上的Macintosh HD才是根目录而Macintosh HD - 数据是挂载在/System/Volumes/Data的需要注意这点。 比如说“照片”App 的内容一般在Macintosh HD - 数据/Users/用户名/Pictures/照片图库.photoslibrary双引号防止在空格中断。你只需要将其复制到其他地方直接打开就能在“照片”中看到了。 “Pictures”在“访达”中可能因为本地化显示为“图片”其他这些文件同理。很多人会将东西放在桌面就可以在“桌面”或“Desktop”中看到。 对于开发人员来说可能还需要复制一些配置文件或者二进制文件这些都可以在对应位置找到。
复制所有的内容
通过上面我们知道了有些目录和文件是不能复制的以及对我们有用的文件都在哪。
所以理所当然的我们想可以在新的硬盘中创建对应目录然后将Macintosh HD和Macintosh HD - 数据依次拖到对应的目录下就行。
但是新的问题总是一个个冒出来某些文件的直接拖拽复制可能会出现问题比如说库乐队GarageBand 我一开始以为是硬盘坏块或者什么我的魅族MX3上的一些照片就是闪存问题丢失了一些照片但是尝试了多个备份中的库乐队发现还是这样说明不是硬盘的问题。
类似的还有 iMovie 和 Xcode但是库乐队是一种特殊情况像 iMovie 和 Xcode 的图标上都有所显示但是库乐队没有这个符号如下却也无法复制成功 这是因为库乐队找不到的是下载到乐器资源这些后期才有的资源而不是程序本身的依赖项比如 Xcode 使用的编译器、动态连接库等所以图标上并没有显示而它的记录是有这些的但是这个时候找不到就导致复制失败因为在本机上找的。
这里不展开去说其他程序的因为不同的程序出现问题的原因不同但是简而言之就是复制的时候破坏了软链接。
解决方案也很明显就是不破坏软链接来进行复制这时候就不能使用拖拽的方法了实践表明这会破坏软链接所以需要使用rsync -l来保留软链接进行复制速度有时差不多。注意不要使用cp -RP或cp -a来复制某些文件会复制失败按理说是等价的但是可能因为某些原因导致出现问题如果后面发现了我会在这贴出来。
我们先尝试复制一次备份的内容如果可以的话再使用脚本自动复制所有的备份即可。
命令如下
sudo rsync -av \
/Volumes/时间机器/Backups.backupdb/XXX的Macmini/2019-11-19-142257/Macintosh HD - 数据/ \
/Volumes/10TB/时间机器手动导出/Macintosh HD - 数据/其中
a是存档模式这会递归读取目录不破坏符号链接、权限等信息。a等价于rlptgoD所以我们不需要再使用l选项。rsync默认无选项是存档模式的但是我们使用了其他选项所以需要再使用一下。v会打印传输完成的文件。使用这个是为了让看到是否在传递文件可能会降低一点速度。第二行是源地址。第三行是目标地址。时间机器手动导出这个目录需要手动创建一下。
创建文件列表需要一段时间然后就可以看到在复制文件了如下
v选项几乎不会影响速度如下 速度最高速度如上图5400 RPM 的消费级机械硬盘这速度差不多满速了速度低的话就几十 KB/s 都有可能。
现在单个复制完成之后就可以开始写脚本了。下面的脚本仅供参考因为不同的人可能有所不同我只是根据我的情况编写的。
#!/bin/bash
#
for dir in $(ls); do# 忽略三个不需要的文件和目录名防止路径出现问题if [ $dir *.inProgress ]||[ $dir Latest ]||[ $dir com.apple.TimeMachine.inheritance.plist ]; thenecho Skip this directoryelse# 在目标位置创建对应目录mkdir /Volumes/10TB/时间机器手动导出/$dir# 复制两个目录sudo rsync -av $dir/Macintosh HD/ /Volumes/10TB/时间机器手动导出/$dir/Macintosh HD/# 排除.DocumentRevisions-V100文件会快很多sudo rsync -av --exclude .DocumentRevisions-V100 /Volumes/时间机器/Backups.backupdb/XXX的Macmini/$dir/Macintosh HD - 数据/ /Volumes/10TB/时间机器手动导出/$dir/Macintosh HD - 数据/fi
done;希望能帮到有需要的人