Можно извлечь содержание об/мин к диску (а не в / но некоторый другой каталог). Я использую мГц для этого, где можно ввести файл об/мин как каталог и извлечь файлы, Вам нужно. Для извлечения целого об/мин в текущий каталог, Вы могли бы сделать что-то как
rpm2cpio yourrpm.rpm | cpio -idmv
utime
/utimes
syscall позволяет Вам установить время доступа и время изменения произвольно. Таким образом, Вы можете stat
файл, затем используйте utime
изменить только одного из них. Из страницы справочника:
Имя:
utime, utimes - файл изменения длится доступ и время изменения
РЕЗЮМЕ
#include <sys/types.h> #include <utime.h> int utime(const char *filename, const struct utimbuf *times); #include <sys/time.h> int utimes(const char *filename, const struct timeval times[2]);
ОПИСАНИЕ
utime () системный вызов изменяет времена доступа и время изменения inode, указанного именем файла к actime и modtime полям времен соответственно.
Если времена являются ПУСТЫМИ, то времена доступа и время изменения файла установлены на текущее время.
Изменение меток времени разрешено когда: или процесс имеет appropri ‐, съел полномочия, или эффективный идентификатор пользователя равняется идентификатору пользователя файла, или времена являются ПУСТЫМИ, и процесс имеет разрешение записи для файла.
[ … ]
Я нашел путь. Я использовал статистику GNU (stat (GNU coreutils) 8.19
) для рассмотрения "Доступа" "Измените" и метки времени "Изменения" файла.
Я мог обновить время "Изменения" путем выполнения a chmod u+x
на файле. "Измените" и метки времени "Доступа" остались тем же.
Я мог обновить файл "Доступа" путем выполнения a cat
на нем. "Измените" и метки времени "Изменения" остались тем же.
Я записал маленькую программу C, которая просто делает open(filename, O_WRONLY);
, пишет единственный байт в дескриптор файла, и затем a close(filedes);
на получающемся дескрипторе файла. stat
не показал изменения на метке времени "Доступа" подчиненного файла, но "Измените", и метки времени "Изменения" были обновлены.
Это было всем в соответствии с Linux 3.5.4, справедливо недавно Дуга обновления ноутбук Linux, в файловой системе Ext4.
Маленькая программа C:
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int
main(int ac, char **av)
{
int fd = open(av[1], O_WRONLY);
if (fd >= 0)
{
char buf[12];
write(fd, buf, 1);
if (close(fd) < 0)
fprintf(stderr, "Problem closing file: %s\n",
strerror(errno));
} else {
fprintf(stderr, "Problem opening \"%s\": %s\n",
av[1], strerror(errno));
}
return 0;
}
Повторно смонтируйте FS с noatime
атрибут, измените файл и повторно смонтируйте его назад.
Включайте -m
аргумент touch
. По умолчанию, touch
команда изменяет и время доступа и время изменения; если Вы передаете также -a
или -m
затем только требуемое время изменяется.