
Я просматривал страницу руководства по rm
команде на моем MacBook и заметил следующее:
-W Попытаться восстановить указанные файлы. В настоящее время эта опция может использоваться только для восстановления файлов, покрытых белыми пятнами.
Что это значит? Что такое «белая мгла»?
решение1
Whiteout — это специальный файл-маркер, размещаемый некоторыми «прозрачными» файловыми системами высшего порядка (теми, которые используют одно или несколько реальных местоположений в качестве основы для своего представления), в частности, объединенными файловыми системами, чтобы указать, что файл, который существует в одном из базовых местоположений, был удален в искусственной файловой системе, даже если он все еще существует в другом месте. Список объединенной файловой системы не покажет закрашенный файл.
Наличие специального типа файла, представляющего эти данные, соответствует традиции BSD, от которой произошла macOS:macOS использует st_mode
биты 0160000 для их маркировки. С использованиемls -F
, эти файлы будут отмечены %
знаком, иls -W
покажут, что они существуют(в противном случае они обычно исключаются из списков). Многие системы объединения также создают обычные файлы со специальным именем для представления пробелов в системах, которые не поддерживают эти файлы.
Я не уверен, что macOS сама каким-либо образом раскрывает эти возможности, но другие системы из ее наследия BSD это делают, и вполне возможно, что внешние драйверы файловой системы могут их использовать.
решение2
«Белая мгновенье» — это особенность некоторых объединенных файловых систем.
Если у вас есть файловая иерархия, на которую наложено объединенное монтирование, и файл существует на обоих уровнях полученной видимой файловой иерархии, можно использовать «забеливание» для удаления файла из верхнего уровня, сохраняя его на нижнем уровне (например, с помощью Tipp-ex).
Утилита rm
способна удалить засветку и снова отобразить файл (поскольку он никогда не удалялся из нижней файловой системы).