ctime
не может быть обновлен, так как это создание время (*). См. here за то, что POSIX говорит об этом. Если вы действительно, действительно хотите установить ctime
, переместите исходную директорию в сторону, создайте новую (этот шаг устанавливает ctime
), переместите все исходное содержимое в новое, удалите старый.
Ваш код должен быть прав для обновления mtime
(модификация времени).
(*) Или, скорее, в зависимости от операционной системы и файловой системы, она может, если взломать на него, но на самом деле, действительно не должен.
Не является ли 'FileUtils.touch (dir)' достаточным? [FileUtils :: touch] (http://ruby-doc.org/stdlib-2.2.0/libdoc/fileutils/rdoc/FileUtils.html#method-c-touch): «Время модификации обновлений (mtime) и время доступа (atime) файла (ов) в списке. Файлы создаются, если они не существуют. " –
Документы приводят этот пример для 'mkdir_p':' FileUtils.mkdir_p '/ usr/local/lib/ruby'', который будет создавать родителей по мере необходимости. Я не думаю, что вы можете сделать это с помощью 'touch', но (после тестирования)' touch', похоже, отлично работает для создания одного каталога. Я еще не использовал 'touch', поэтому не знаю о создании родителей за один шаг. –
Документы для touch говорят, что это влияет только на mtime и atime, а не на ctime. Также он создавал бы обычный файл, а не каталог. – stark