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 …