Изменение метки времени символьной ссылки

Не смотря на источник ядра, который зависел бы от определенной микросхемы SD и ее драйвера ядра. Необходимо посмотреть на таблицы данных и источник ядра. Например, на моем ноутбуке:

$ lspci | grep SD
15:00.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 21)

По-видимому, микросхема реализует конечный автомат SD в аппаратных средствах и некоторый интерфейс микросхемы к хосту (PCI, в случае моего). Специфические особенности соединения микросхемы к карте могут быть абстрагированы микросхемой, но вероятно, что выбор может быть под влиянием хоста. Ядро, вероятно, пойдет с самыми быстрыми доступными средствами, если не будет известная ошибка.

Обновление: проверенный источник ядра. Если карта поддерживает 4-разрядные передачи, им включают автоматически. Вы видите это в drivers/mmc/core/mmc.c, функция mmc_init_card(). Для Linux 2.6.38, строка 489, кажется, активирует высокоскоростные передачи, и строка 535, кажется, активирует передачи 4 бита шириной. Не позволяйте ‘mmc’ смутить Вас. Этот каталог содержит драйверы, которые обрабатывают SD (включая SDIO) карты, а также MMC.

31
07.02.2013, 01:26
4 ответа

добавьте переключатель-h

touch -h -t 201301291810 myfile.txt

Mandatory arguments to long options are mandatory for short options too.
  -a                     change only the access time
  -c, --no-create        do not create any files
  -d, --date=STRING      parse STRING and use it instead of current time
  -f                     (ignored)
  -h, --no-dereference   affect each symbolic link instead of any referenced
                         file (useful only on systems that can change the
                         timestamps of a symlink)
  -m                     change only the modification time
  -r, --reference=FILE   use this file's times instead of current time
  -t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time
45
27.01.2020, 19:38

Вам, возможно, понадобится более поздняя версия touch. Если это не опция, и если Вы знаете C, Вы могли бы записать небольшую программу, чтобы сделать это сами использование функции lutimes.

3
27.01.2020, 19:38

Грубая сила путь следующие:

 0. delete the old symlink you wish to change     
 1. change the system date to whatever date you want the symlink to be
 2. remake the symlink
 3. return the system date to current.
0
27.01.2020, 19:38
  • 1
    сделало меня любопытным, какая система требует этого? btw, любой файл, созданный, в то время как Вы еще не назначили системную дату, будет иметь ту слишком положительную сторону –  Aquarius Power 04.06.2014, 00:49
  • 2
    Поскольку каждый не может изменить символьную ссылку inode когда-то созданный. –  mdpc 04.06.2014, 01:20

atime и mtime символьной ссылки могут быть изменены с помощью lutimes функция. Следующая программа работает на меня на MacOSX и Linux для копирования оба раза от произвольного файла до символьной ссылки:

#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/time.h>

int
main(int argc, char **argv)
{
    struct timeval times[2];
    struct stat info;
    int rc;

    if (argc != 3) {
        fprintf(stderr, "usage: %s source target\n", argv[0]);
        return 1;
    }
    rc = lstat(argv[1], &info);
    if (rc != 0) {
        fprintf(stderr, "error: cannot stat %s, %s\n", argv[1],
                strerror(errno));
        return 1;
    }

    times[0].tv_sec = info.st_atime;
    times[0].tv_usec = 0;
    times[1].tv_sec = info.st_mtime;
    times[1].tv_usec = 0;
    rc = lutimes(argv[2], times);
    if (rc != 0) {
        fprintf(stderr, "error: cannot set times on %s, %s\n", argv[2],
                strerror(errno));
        return 1;
    }

    return 0;
}

Если Вы называете скомпилированный файл copytime, затем команда copytime file link может использоваться, чтобы заставить ссылку иметь тот же atime и mtime как file делает. Не должно быть слишком трудно изменить программу для использования времен, указанных на командной строке вместо того, чтобы копировать времена из другого файла.

0
27.01.2020, 19:38

Теги

Похожие вопросы