Я просто знаю это ls -t
и ls -f
даю различную сортировку файлов и подкаталогов в каталоге.
- В чем разница между меткой времени, временем модификации и временем создания файла?
- Как получить и изменить эти виды информации с помощью команд?
- С точки зрения какой информации люди говорят, что файл «новее», чем другой?
- Какие виды изменения информации не сделают файл другим?
Например, я видел, кто-то написал:
По умолчанию программа rsync только проверяет, отличаются ли файлы по размеру и метке времени. Неважно, какой файл более новый, если он другой, он перезаписывается. Вы можете передать флаг --update в rsync, что заставит его пропускать файлы в месте назначения, если они новее, чем файл в источнике, но только в том случае, если они относятся к одному и тому же типу файла. Это означает, что, если, например, исходный файл является обычным файлом, а пункт назначения является символической ссылкой, файл назначения будет перезаписан независимо от метки времени.
Кстати, тип файла здесь означает только обычный файл и симлинк, а не такой тип, как pdf, jpg, htm, txt и т. Д.?
Ответы:
Существует 3 вида «временных меток»:
Чтобы отобразить эту информацию, вы можете использовать,
stat
которая является частью coreutils.stat
также покажет вам дополнительную информацию, такую как устройство, inode, ссылки и т. д.Помните, что такого рода информация сильно зависит от файловой системы и параметров монтирования. Например, если вы смонтируете раздел с этой
noatime
опцией, информация о доступе не будет записана.Утилита для изменения временных меток будет
touch
. Есть несколько аргументов, чтобы решить, какую временную метку изменить (например, -a для времени доступа, -m для времени модификации) и повлиять на синтаксический анализ новой данной временной метки. Смотритеman touch
для более подробной информации.touch
может пригодиться в сочетании сcp -u
( «копировать только в том случае, если файл SOURCE новее файла назначения или когда файл назначения отсутствует» ) или для создания пустых файлов маркеров.источник
ls -l
. И тип файла относится к файлу или символической ссылке (или другим типам файлов, таких как каталоги или устройства). Не то, что тип данных в файле (текст против JPEG и т. Д.).Ответ echox действителен, но я хочу добавить информацию о времени создания файла.
Поддержка файловой системы
Некоторые файловые системы поддерживают дополнительную запись в inode относительно времени создания (или времени рождения). Я знаю, что ext4 поддерживает эту функцию, а также JFS и BTRFS .
Однако большинство инструментов и API еще не были обновлены, чтобы прочитать эту дополнительную информацию. Так что, хотя оно может быть там, оно недоступно.
Например, в Ubuntu 12.04 LTS для файла, который я создал сегодня, я получаю следующее:
Вы можете видеть, что более новая функция stat имеет поле рождения, хотя вывод кажется неправильным. И через debugfs мы можем получить информацию (crtime, как я на файловой системе ext4).
поддержка statx
С тех пор, как в Kernel 4.11 появился новый системный вызов statx , помимо лучшей поддержки Y2038 или сетевых файловых систем, он также предоставляет несколько дополнительных функций, таких как
btime
доступ или время рождения (время создания). Поддержка ext4 должна быть в том же выпуске ядра 4.11.Были исправления для добавления поддержки этого нового системного вызова в более поздних выпусках ядра: например, BTRFS и F2FS в ядре 4.13, SMB3 в 4.14, GFS2 в 4.15, NFS в 4.16 и т. Д.
Предстоящий glibc предоставит вызов функции для запроса этого интерфейса (см. Новости Phoronix о поддержке statx glibc ). Таким образом, мы можем ожидать поддержку этой функции в пользовательском пространстве довольно скоро.
источник