Linux установить дату файла

How can I change ‘change’ date of file?

You cannot change the ctime by ordinary means. This is by design: the ctime is always updated to the current when you change any of the file’s metadata, and there is no way to impose a different ctime. To change the ctime of a file, you need to do one of the following:

  • Set the system time to the ctime you want to impose, then touch the file, then reset the system time.
  • Modify the kernel to add an interface to change the ctime.
  • Access the disk image directly (e.g. with debugfs ) and twiddle the bits on the disk (don’t do it while the filesystem is mounted).

You have the answer on related SO question pointed by jw013, for extX, on unmounted disk :

# Update ctime debugfs -w -R 'set_inode_field /tmp/foo ctime 201001010101' /dev/sda1 # Drop vm cache so ctime update is reflected echo 2 > /proc/sys/vm/drop_caches 

$ NOW=$(date) && date -s «2030-08-15 21:30:11» && touch file.txt && date -s «$NOW»

The ctime of a file is updated when any of the metadata is changed.

$ ls -l x.py -rw-rw-r--. 1 ignacio ignacio 485 Mar 26 2010 x.py $ stat -c %z x.py 2010-03-26 11:57:56.237068175 -0400 $ chown ignacio x.py $ stat -c %z x.py 2012-04-08 15:31:33.682383575 -0400 $ ls -l x.py -rw-rw-r--. 1 ignacio ignacio 485 Mar 26 2010 x.py 

evandrix’s answer excerpted in the next line,
NOW=$(date) && date -s «2030-08-15 21:30:11» && touch file.txt && date -s «$NOW»
needs to be improved as described below :

In some systems like mine, date output doesn’t give a valid format to set with date -s

My system bash shell version : GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)
My system date command version : date (GNU coreutils) 8.30

My system date command output and setting the date with this format is:

# date Tue 21 Jan 2020 01:36:22 PM +03 # date -s "Tue 21 Jan 2020 01:36:22 PM +03" date: invalid date ‘Tue 21 Jan 2020 01:36:22 PM +03’ 

So it is necessary to improve evandrix answer;
It would be better to assign the NOW variable to the timestamp value
change NOW=$(date) to NOW=$(date +@%s)

 NOW=$(date +@%s) && date -s "2030-08-15 21:30:11" && \ touch file.txt && date -s "$NOW" 

Adding sudo command for non root user

 sudo bash -c 'NOW=$(date +@%s); date -s "2030-08-15 21:30:11"; touch file.txt; date -s "$NOW"' 
 sudo bash -c 'NOW=$(date +@%s); date -s "$2"; touch "$1"; date -s "$NOW"' -- \ "file.txt" "2030-08-15 21:30:11" 

In this way for easy use, the filename and setting date are assigned as arguments at the end of the line.

Читайте также:  Linux bash script guide

Источник

Команда Date (Дата) в Linux с примерами использования

Команда Date в Linux используется для отображения или установки системной даты и времени. Эта команда позволяет пользователям отображать время в различных форматах и посмотреть прошлые и будущие даты.

В этой инструкции мы расскажем про команду date в Linux и покажем примеры использования.

Как использовать команду Date (дата) Linux?

Ниже приведен синтаксис команды date в терминале Linux:

По умолчанию команда date выводит дату и часовой пояс, в котором настроена система. Чтобы изменить дату и время, вам потребуется пользователь с правами root или sudo.

Отображения команды Date

Когда команда дата используется без каких-либо параметров и аргументов, то она отображает текущую дату и время в формате по умолчанию. Выглядит это следующим образом:

Команда Date в Linux без параметров (атрибутов)

Выходные данные показывают день недели, день месяца, текущий месяц, год, текущее время и часовой пояс с указанием года. Так же команда « Date » отображает часовой пояс по умолчанию, установленный в вашей операционной системе.

Показать будущие даты

Параметр в строке date -d или —date покажет будущие или предстоящие даты. Чтобы вывести в терминале будущую дату, введите значение например «next Friday» (следующая пятница) или “tomorrow” (завтра).

Чтобы отобразить в терминале завтрашнюю дату, введите следующую команду:

Показ завтрашней даты в терминале

Отображение даты следующей пятницы:

Отображение даты следующей пятницы

Показ прошлых дат в Linux

Используя опцию -d, вы можете посмотреть прошлые даты в системе Linux. Команда даты позволяет вводить такие значения, как “yesterday” (вчера), «Saturday» (Суббота), «3 year ago» (3 года назад) и аналогичные. Таким образом, используя следующую параметр -date, вы можете отобразить прошлые даты:

Показ прошлой даты в Linux 1 год назад

Чтобы показать вчерашнюю дату, используйте следующую команду:

Показ вчерашней даты

Аналогично, чтобы отобразить дату последней пятницы, выполните указанную ниже команду:

Показ даты последней пятницы

Параметры формата команды Date

Вывод терминала команды Linux date может быть изменен с использованием управляющих символов формата, которым предшествует символ «+«. Все эти элементы управления форматом начинаются со знака » % «.

Например, мы хотим отформатировать вывод команды date следующим образом:

Параметры формата команды Date

Используя этот список символов форматирования, вы можете отображать выходные данные в желаемом формате:

  • %a — Печатает название дня недели в кратком формате (например, Пн)
  • %A — Используется для отображения полного названия дня недели (например, понедельник)
  • %b — Отображение названия месяца в краткой форме (например, январь)
  • %B — Используется для отображения полного названия месяца (например, январь)
  • %d — Отображает день месяца (например, 05)
  • %H — Время отображения (00..23)
  • %I — Время отображения в формате (01..12)
  • %j — Отображает день года (001..366)
  • %m — Отображает число месяцев (01..12)
  • %M — Показ минут за 00..59 сек.
  • %S — Отображает секунды (00..60)
  • %u — Отображение числа дней недели (1..7)
  • %Y — Используется для отображения полного года (например, 2019)
Читайте также:  Astra linux добавить локальный репозиторий

Используя следующую команду, вы можете изучить полный список параметров формата команды date:

Отображение даты из строкового значения

Параметры -date или -d позволяют отображать конкретную дату. Чтобы отобразить определенную дату, укажите строку даты в удобочитаемом формате, как показано в следующей команде:

Отображение даты из строкового значения

Используя опцию -d, вы также можете отобразить дату в пользовательском форматировании следующим образом:

отобразить дату в пользовательском форматировании

Показать время последнего изменения файла

Иногда нам нужно просмотреть время последнего изменения файла. Команда «Date» в системе Linux помогает вам отобразить время последнего изменения файла. При использовании команды «Date«, за которой следует опция «— r«, выводится время изменения файла.

Например, чтобы отобразить дату последнего изменения файла «/etc/hosts«, используйте следующую команду:

Показать время последнего изменения файла

Команда date для установки часового пояса

Команда «date» отображает часовой пояс вашей системы по умолчанию, определенный в файле «/etc/localtime«. Однако для отображения часового пояса другой страны установите переменную среды » TZ » в нужный часовой пояс.

Чтобы просмотреть все доступные списки часовых поясов, выполните следующую команду:

Просмотреть все доступные списки часовых поясов в Linux

Например, чтобы установить часовой пояс для отображения времени от Сиднея до Австралии, выполните следующую команду:

Изменение часового пояса в Linux

date в качестве преобразователя эпох

Команда «date» также работает как конвертер эпох. Эпоха отображает время в количестве секунд, прошедших со 2 февраля 1975 года в 00:00:00 UTC. Чтобы отобразить время, прошедшее в секундах до текущей даты, используйте команду date вместе с элементом управления форматом %s:

Команда date в качестве преобразователя эпох

Например, чтобы просмотреть, сколько секунд прошло с эпохи до определенной даты, используйте следующую команду:

Команда date в качестве преобразователя эпох

Использование date с другими командами

Команда «date» в системе Linux может быть реализована вместе с другими командами для создания различных имен файлов, содержащих информацию о текущей дате и времени.

В следующем примере мы создали новый файл резервной копии SQL с помощью приведенной ниже команды:

$ mysqldump database_name > database_name-$(date +%Y%m%d).sql

Команда date также может быть использована в сценарии командной оболочки. В следующем примере мы назначили вывод команды date новой переменной » date_now’.

Использование date с другими командами

Установка даты в Linux

Используя команду date, вы можете вручную установить дату системы Linux.

Например, чтобы вручную установить дату и время в системе Linux на 2:30 вечера 13 октября 2021 года. Выполните приведенную ниже команду:

Установка даты в Linux

В большинстве дистрибутивов Linux системное время по умолчанию синхронизируется с NTP или timedatectl / timesyncd. Так что не нужно сильно беспокоиться о его изменении.

Заключение

Мы рассказали о том, как использовать команду date в системе Linux. Чтобы узнать больше о команде date, можете посмотреть справочные страницы команды date.

Источник

Изменение метки времени файла в Linux — команда touch

Каждый файл в Linux ассоциирован с временной меткой, которая показывает время последнего доступа, последней модификации и последнего изменения.

Читайте также:  Ppd file printer linux

Когда мы создаем новый файл или изменяем существующий или его атрибуты, эта временная метка автоматичекси изменяется

Touch — это команда которая используется для изменения временных меток (время доступа, время модификации и время изменения файла)

Данную команду Вы вряд ли будете использовать часто, но в некоторых случаях она может оказаться очень полезной

Вы можете создать пустой файл используя команду touch. Представленный ниже пример создаст файл нулевой длины с именем grnd.txt

Вы также можете использовать опцию -с, чтобы избежать создания новых файлов. То бишь если мы используем ключ -c и файл с таким именем не существует, то команда touch не создаст этот файл.

Вы также можете создать более одного файла используя только одну команду touch. Пример показывает создание 4 файлов с именами ab de fj kl

Мы можем изменить метку о времени доступа к файлу используя ключ -a. По умолчанию установиться текущее системное время.

$ stat grnd.txt File: `grnd.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 3408768 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1001/ alexey) Gid: ( 4/ adm) Access: 2012-11-20 14:07:44.948481916 +0400 Modify: 2012-11-20 14:07:44.948481916 +0400 Change: 2012-11-20 14:07:44.948481916 +0400 Birth: -

После выполнения команды опять проверим состояние файла:

$ stat grnd.txt File: `grnd.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 3408768 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1001/ alexey) Gid: ( 4/ adm) Access: 2012-11-20 14:27:29.264508552 +0400 Modify: 2012-11-20 14:07:44.948481916 +0400 Change: 2012-11-20 14:27:29.264508552 +0400 Birth: -

3. Изменить метку временя модификации (Modify)

Данную команду можно использовать для изменения времени модификации всех объектных файлов, например для использования утилиты make.

Помимо того, что Вы можете изменить метки на текущее время, Вы также можете задать явные значение этих времен, то бишь то время, которое Вам необходимо. Для этого используются ключи -t и -d

YY – Показывает последние две цифры года. Если значение YY находится между 70 и 99, то значение СС принимается как 19. А если значение YY jn 00 до 37, то СС будет установлено как 20. Невозможно задать дату более 18 Января 2038 года.

$ touch -a -m -t 203710141103.24 grnd.txt

Проверим результат выполнения:

:~$ stat grnd.txt File: `grnd.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 3408768 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1001/ alexey) Gid: ( 4/ adm) Access: 2037-10-14 11:03:24.000000000 +0400 Modify: 2037-10-14 11:03:24.000000000 +0400 Change: 2012-11-20 15:08:04.992597671 +0400 Birth: -

Рассмотрим другой пример с более удобочитаемой записью даты:

$ touch -d "2012-10-20 13:13:13.000000000 +0400" grnd.txt

Команда touch будет очень полезна для разработчиков, особенно если работать с Makefiles

Вы также можете взять один файл как эталон и обновить метки времени другим файлам, то бишь другие файлы будут иметь метки времени такие же как и у эталонного. Для этого используется ключ -r

Источник

Оцените статью
Adblock
detector