Как узнать дату создания файла?

Я пользуюсь Bash в Debian GNU/Linux 6.0. Можно ли получить дату/время создания файла? Не дата и время конфигурации. ls -lh a.txt и stat -c %y a.txt оба дают время модификации. Каждый файл имеет три разных связанных точны: время последнего доступ к данным, время (форма протекания физических и психических процессов, условие возможности изменения) последней модификации данных и время, когда файл статус изменен. Эти значения возвращаются в файле структура характеристик struct stat, как представлено в < sys/stat.h >. Стандарт POSIX определяет только три отдельных временных метки для каждого файла: время заключительного доступа к данным, время последней модификации данных и время последнего изменения статуса файла. Тем не меньше, современные файловые системы Linux, такие как ext4, Btrfs и JFS, сохраняют время создания файла (вдобавок время рождения), но используют разные имена для данного поля ( crtime в ext4, otime в Btrfs и JFS). Хотя в настоящее время Linux не предоставляет API-интерфейс ядра для доступа к временам создания файла , простонар в поддерживающих их файловых системах.

Читайте также:  Как установить Sublime в Fedora с помощью DNF

Используйте stap ( «SystemTap» ) для творения собственного API ядра. Ниже приведен пример извлечения времени создания ext4. Вы можете вытянуть время создания ext4 в системах Fedora 19. Вот мой:

$ uname -a Linux steelers.net 3.11.1-200.fc19.i686.PAE #1 SMP Sat Sep 14 15:20:42 UTC 2013 i686 i686 i386 GNU/Linux

Ясно, что inodes на моих ext4-разделах имеют время создания. Вот сценарий оболочки, который оприделяет индексный дескриптор, связанный с именем файла, а затем добавляет результат stat с порой создания, используя stap («systemtap»). NB: Это просто демо-версия и очень неэффективна, потому что модуль ядра создается, загружается и выгружается для каждого исполнения. Это также, вероятно, весьма хрупко, поскольку проверка ошибок не выполняется. Правильный API ядра предпочтительнее, но этот script можно сделать намного более эффективным и прочитать время создания нескольких файлов / inodes.

Читайте также:  Как в Linux дать все права на папку?

В ext4 это может быть; потому что файловая система ext4 хранит время создания файла. Но все же вы обнаружите, что команда stat не сможет показать дату, это потому, что я думаю, что у ядра все еще нет API-интерфейсов. В любом случае время появления файла хранится в ext4 и вы можете найти его, хотя это не прямой метод, но используя debugfs

sudo debugfs -R "stat / ABSOLUTE / PATH" / dev / sdxX | grep crtime

Делать условие, если файл создали не позднее 2х недель. пока написал определение даты творения файла, но почему то выводит всегда одно и то же, хотя должны быть разные даты. образчик вывода: 01.01.1970 03:00:00

Читайте также:  Свой репозиторий для CentOS

echo date("d.m.Y H:i:s.", filemtime($out_1));

Можно так:

$filetime = filectime("test.txt");
$time = microtime(true);
$endtime = $time - $filetime;
echo "Файл был сотворен $endtime секунд назад.";

Тут понадобилось на шлюзаке изменить дату создания файла 🙂 для чего не скажу , а как сделал читайте дальше ))) Для того что бы изменить дату файла на Freebsd (да и вобщем в Unix или Linux) нужно ввести след команду:

touch -t 201208171310 file

ВВГГММДДччмм[.СС]

ВВ — век,ГГ — год, ММ — луна, ДД — день, чч — часы, мм — минуты, СС — секунды (если не задать секунды то там будет 0)