API для установки меток времени для файлов и каталогов в btrfs - PullRequest
0 голосов
/ 01 июня 2019

Файлы / каталоги BTRFS содержат метки времени:

  • Создание (otime)
  • Модификация (mtime)
  • Изменение атрибута (ctime)
  • Доступ (atime)

Есть ли какой-нибудь API, где я мог бы установить все эти временные метки для файла? Я немного погуглил, но пока ничего не нашел.

Языки программирования не имеют значения, я ожидаю, что будет некоторый C API, но Python тоже подойдет и будет лучше.

1 Ответ

2 голосов
/ 01 июня 2019

Из C mtime и atime можно установить с помощью utime(2) и его родственников.utime(2) само дает вам секундную точность, utimes(2) имеет микросекунды, а utimensat(2) дает вам наносекунды.Существуют варианты, такие как futime, если вместо имени файла есть дескриптор файла.

Python может предоставить то же самое с помощью функции os.utime.

Традиционно это невозможно произвольноизменить otime или ctime, кроме как путем ручного редактирования необработанной файловой системы.Я не знаю, что Linux предоставил какой-либо API ядра для их изменения.Конечно, вы можете обновить ctime до текущего времени, изменив его состояние каким-либо образом, и вы можете обновить otime до текущего времени, удалив и заново создав файл.В принципе, вы можете установить для них другое время, сначала изменив системные часы (если вы root), но это может испортить множество других вещей в системе и, вероятно, является плохой идеей.

...