git 有没有内置的方式*来检查工作目录中的文件是否神奇地**改变了***?
如果是这样:如何让 git 检查工作目录的完整性?
* 找出工作目录中的哪些文件被跟踪,只对它们进行散列,删除它们,将它们检出,再一次,再散列它们,并比较散列值并不完全算作“内置”。
** 由于宇宙射线击中硬盘、独角兽在盘子上疾驰或其他不让 FS 知道发生了变化的方式(例如编辑角色设备),文件内容发生了变化。
*** 在名称、内容或其他跟踪属性方面(例如神奇地变为可执行文件)。
请注意,这个问题是另一个问题的弱化版本。回答这个问题(您当前正在阅读的问题)更容易。如果这个问题得到解决,我将在另一个问题中链接到这个问题,并指出这个问题下面的答案没有解决的另一个问题的部分。
有人问git status我和我要求的有什么区别。git status只有当 FS 告诉它发生了变化时才会注意到变化。如果文件被神奇地损坏,FS 不知道,因此git status不会指示更改。git diff、git add --all等当然也不会。
响应使用的建议git fsck:它不起作用。
我做了什么:
christoph@christoph-laptop-16-04-2:/t$ dd if=/dev/zero bs=1M count=30 of=/tmp/con
30+0 records in
30+0 records out
31457280 bytes (31 MB, 30 MiB) copied, 0.0143967 s, 2.2 GB/s
christoph@christoph-laptop-16-04-2:/t$ mkfs.ext4 /tmp/con
mke2fs 1.42.13 (17-May-2015)
Discarding device blocks: done
Creating filesystem with 30720 1k blocks …Run Code Online (Sandbox Code Playgroud) 无论是 UEFI、手机还是 SSD,三星显然都不是特别擅长执行标准。不幸的是,几年前,我为我的笔记本电脑购买了三星 SSD 840 PRO 系列 SSD,此后我一直在使用它(这是在所有有关其不符合标准的实现的信息公开之前)。这是一个非常好的 SSD,除了异步 Trim 无法正常工作,也就是说它会删除不应该删除的数据。因此,Linux 上不使用 Trim,因此人们的数据不会丢失(在某些三星 SSD 型号上禁用 Trim 之前发生过这种情况)。
因为我经常使用这款 SSD:禁用 Trim 对 SSD 磨损均衡能力的影响有多大?
我无法找到关于 SMART 数据的不同属性的含义的特别好的和可靠的信息。主要是人物和文章,几句话之后基本上都是猜测和自相矛盾。
这篇维基百科文章说:
每个驱动器制造商都定义了一组属性,并设置了阈值,超出该阈值属性在正常操作下不应通过。每个属性都有一个原始值,其含义完全取决于驱动器制造商(但通常对应于计数或物理单位,例如摄氏度或秒),这是一个标准化值,范围从 1 到 253(其中 1 代表最坏情况,253 代表最好)和最差值,代表最低记录的标准化值。属性的初始默认值为 100,但不同制造商可能有所不同。
首先:鉴于其标题是“已知 ATA SMART 属性”,该内容的相关性如何?它是否适用于通过 SATA 连接的 SSD?
为什么值的范围是 1 到 253?0、254 和 255 是怎么回事?是否使用了 100 以上的值?
我的 SSD 的 SMART 数据如下所示(根据gnome-disks):

没有大于 100 的值。
我有很多外部 HDD,但只有这一个 SSD(这是内部 SSD),因此我无法将其 SMART 数据与我知道使用量的其他 SSD 的数据进行比较。但我认为我的 SSD 磨损级别计数的原始值为 245,这意味着 SSD 的存储单元平均已写入 245 次。请告诉我这是否正确,读取是否也算在内,是否只是指定存储空间(256 GB)的245倍或指定存储空间+保留存储空间(用于替换故障部件)。
我的 SSD …