Создать архив даты linux

Обновлено: 21.11.2024

Короче говоря, архив – это отдельный файл, содержащий набор других файлов и/или каталогов. Архивные файлы обычно используются для передачи (локально или через Интернет) или создания резервной копии набора файлов и каталогов, что позволяет вам работать только с одним файлом (при сжатии он имеет меньший размер, чем сумма всех файлов). файлы внутри него) вместо многих. Точно так же архивы используются для упаковки программных приложений. Этот единственный файл можно легко сжать для удобства передачи, в то время как файлы в архиве сохраняют структуру и разрешения исходных файлов.

Мы можем использовать инструмент tar для создания, просмотра и извлечения файлов из архивов. Архивы, созданные с помощью tar, обычно называются «tar-файлами», «tar-архивами» или — поскольку все заархивированные файлы объединены в один — «tarballs».

В этом руководстве показано, как использовать tar для создания архива, вывода списка содержимого архива и извлечения файлов из архива. Две общие опции, используемые со всеми тремя этими операциями, — это «-f» и «-v»: чтобы указать имя файла архива, используйте «-f», за которым следует имя файла; используйте параметр ‘-v’ («подробный»), чтобы tar выводил имена файлов по мере их обработки. Хотя параметр «-v» необязателен, он позволяет вам наблюдать за ходом выполнения операции tar.

В оставшейся части этого руководства мы рассмотрим 3 темы: 1. Создание архивного файла, 2. Получение списка содержимого архивного файла и 3. Извлечение содержимого из архивного файла. Мы завершаем это руководство рассмотрением 6 практических вопросов, связанных с управлением архивными файлами. То, что вы усвоите из этого руководства, необходимо для выполнения задач, связанных с кибербезопасностью и облачными технологиями.

1- Создание файла архива

Чтобы создать архив с помощью tar, используйте параметр «-c» («создать») и укажите имя создаваемого файла архива с помощью параметра «-f». Обычной практикой является использование имени с расширением «.tar», например, «my-backup.tar». Обратите внимание, что если не указано иное, все команды и параметры команд, используемые в оставшейся части этой статьи, используются в нижнем регистре. Имейте в виду, что при вводе команд из этой статьи на своем терминале вам не нужно вводить знак приглашения $, который появляется в начале каждой командной строки.

Укажите в качестве аргументов имена архивируемых файлов; чтобы создать архив каталога и всех содержащихся в нем файлов и подкаталогов, укажите имя каталога в качестве аргумента.

Чтобы создать архив с именем «project.tar» из содержимого каталога «project», введите:

$ tar -cvf project.tar проект

Эта команда создает архивный файл с именем «project.tar», содержащий каталог «проект» и все его содержимое. Исходный каталог проекта остается без изменений.

Используйте параметр «-z» для сжатия архива во время его записи. Это дает тот же результат, что и создание несжатого архива, а затем использование gzip для его сжатия, но устраняет дополнительный шаг.

Чтобы создать сжатый архив с именем «project.tar.gz» из содержимого каталога «project», введите:

$ tar -zcvf project.tar.gz проект

Эта команда создает сжатый архивный файл «project.tar.gz», содержащий каталог «проект» и все его содержимое. Исходный каталог проекта остается без изменений.

ПРИМЕЧАНИЕ. При использовании параметра «-z» следует указывать имя архива с расширением «.tar.gz», а не с расширением «.tar», чтобы имя файла показывало, что архив сжат. Хотя это и не обязательно, рекомендуется следовать этому правилу.

Gzip — не единственная форма сжатия. Есть еще bzip2 и и xz. Когда мы видим файл с расширением xz, мы знаем, что он был сжат с использованием xz. Когда мы видим файл с расширением .bz2, мы можем сделать вывод, что он был сжат с помощью bzip2. Мы собираемся отказаться от bzip2, так как он перестал поддерживаться, и сосредоточимся на xz. При сжатии с использованием xz сжатие файлов займет больше времени. Однако, как правило, стоит подождать, так как сжатие намного эффективнее, а это означает, что результирующий файл обычно будет меньше, чем другие используемые методы сжатия. Еще лучше тот факт, что распаковка или расширение файла не сильно отличается между различными методами сжатия. Ниже мы видим пример того, как использовать xz при сжатии файла с помощью tar

$ tar -Jcvf project.tar.xz проект

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

Как видите, xz сжимается дольше всего. Однако он лучше всего справляется с уменьшением размера файлов, поэтому стоит подождать. Чем больше файл, тем лучше становится сжатие!

2- Список содержимого архивного файла

Чтобы получить список содержимого архива tar, не распаковывая его, используйте tar с параметром «-t».

Чтобы просмотреть содержимое архива с именем «project.tar», введите:

$ tar -tvf project.tar

Эта команда выводит содержимое архива ‘project.tar’. Использование параметра '-v' вместе с параметром '-t' приводит к тому, что tar выводит разрешения и время модификации каждого файла вместе с его именем файла - тот же формат, который используется командой ls с параметром '-l'.

Чтобы просмотреть содержимое сжатого архива с именем ‘project.tar.gz’, введите:

$ tar -tvf project.tar

3- Извлечение содержимого из файла архива

Чтобы извлечь (или распаковать) содержимое архива tar, используйте tar с параметром ‘-x’ («извлечь»).

Чтобы извлечь содержимое архива с именем «project.tar», введите:

$ tar -xvf проект.tar

Эта команда извлекает содержимое архива ‘project.tar’ в текущий каталог.

Если архив сжат, что обычно означает, что он будет иметь расширение «.tar.gz» или «.tgz», включите параметр «-z».

Чтобы извлечь содержимое сжатого архива с именем ‘project.tar.gz’, введите:

$ tar -zxvf project.tar.gz

ПРИМЕЧАНИЕ. Если в текущем каталоге есть файлы или подкаталоги с тем же именем, что и у любого из файлов в архиве, эти файлы будут перезаписаны при извлечении архива. Если вы не знаете, какие файлы включены в архив, попробуйте сначала перечислить содержимое архива.

Еще одна причина отображать содержимое архива перед его извлечением – это определить, содержатся ли файлы в архиве в каталоге. Если нет, и текущий каталог содержит много несвязанных файлов, вы можете перепутать их с файлами, извлеченными из архива.

Чтобы извлечь файлы в отдельный каталог, создайте новый каталог, переместите архив в этот каталог и перейдите в этот каталог, где вы сможете извлечь файлы из архива.

Теперь, когда мы научились создавать файл архива и перечислять/извлекать его содержимое, мы можем перейти к обсуждению следующих 9 практических вопросов, которые часто задают профессионалы Linux.

  • Можно ли добавить содержимое в файл архива, не распаковывая его?

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

  • Можно ли удалить контент из файла архива, не распаковывая его?

Это зависит от используемой версии tar. Более новые версии tar будут поддерживать --delete.

Например, предположим, что у нас есть файлы file1 и file2 . Их можно удалить из file.tar следующим образом:

$ tar -vf файл.tar – удалить файл1 файл2

Чтобы удалить каталог dir1:

$ tar -f файл.tar – удалить каталог1/*

  • В чем разница между сжатием папки и ее архивированием?

Самый простой способ увидеть разницу между архивированием и сжатием – посмотреть на конечный результат. Когда вы архивируете файлы, вы объединяете несколько файлов в один. Итак, если мы заархивируем 10 файлов по 100 КБ, вы получите один файл размером 1000 КБ. С другой стороны, если мы сожмем эти файлы, мы можем получить файл размером всего несколько КБ или около 100 КБ.

Как мы видели выше, вы можете создавать и архивировать файлы с помощью команды tar с параметрами cvf. Чтобы сжать созданный нами файл архива, есть два варианта; запустите файл архива через сжатие, такое как gzip. Или используйте флаг сжатия при использовании команды tar. Наиболее распространенные флаги сжатия: -z для gzip, -j для bzip и -J для xz. Мы можем видеть первый метод ниже:

Или мы можем просто использовать флаг сжатия при использовании команды tar, здесь мы увидим флаг gzip «z»:

$ tar -cvzf file.tar /some/directory

  • Как создавать архивы из нескольких каталогов и/или файлов одновременно?

Нередки ситуации, когда нам нужно заархивировать сразу несколько файлов или каталогов. И это не так сложно, как вы думаете, заархивировать несколько файлов и каталогов одновременно. Вы просто указываете, какие файлы или каталоги вы хотите заархивировать, в качестве аргументов команды tar:

$ tar -cvzf файл.tar файл1 файл2 файл3

$ tar -cvzf файл.tar /some/directory1 /some/directory2

  • Как пропустить каталоги и/или файлы при создании архива?

Вы можете столкнуться с ситуацией, когда вы хотите заархивировать каталог или файл, но вам не нужно архивировать определенные файлы. Чтобы избежать архивирования этих файлов или «исключить» их, вы должны использовать опцию –exclude с tar:

$ tar –exclude ‘/some/directory’ -cvf file.tar /home/user

Таким образом, в этом примере /home/user будет заархивирован, но будет исключен каталог /some/, если он находится в /home/user. Важно указать параметр –exclude перед источником и местом назначения, а также заключить исключаемый файл или каталог в одинарные кавычки.

Обзор

Команда tar полезна для создания резервных копий или сжатия файлов, которые вам больше не нужны. Хорошей практикой является создание резервных копий файлов перед их изменением. Если что-то не работает так, как задумано после изменения, вы всегда сможете вернуться к старому файлу. Сжатие файлов, которые больше не используются, помогает поддерживать чистоту системы и снижает использование дискового пространства. Существуют и другие доступные утилиты, но tar преобладает благодаря своей универсальности, простоте использования и популярности.

Ресурсы

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

Об авторах

Кевин Даунс является сертифицированным системным администратором Red Hat или RHCSA. На своей нынешней работе в IBM в качестве системного администратора он отвечает за администрирование сотен серверов, работающих на различных дистрибутивах Linux. Он является ведущим инструктором по Linux в Coding Bootcamps, где он является автором 5 курсов для самостоятельного изучения.

Есть ли в Linux команда, которая показывает, когда файл был создан? Я вижу, что ls -l дает время последнего изменения, но могу ли я получить время/дату создания?

Несмотря на то, что "OT" запрашивает инструмент для отображения этой информации, я думаю, что это полезно знать программистам при работе с большим количеством файловых систем UNIX-y.

Команда sudo debugfs -R 'stat /path/to/file' /dev/sdaX (замените sdaX на имя устройства файловой системы, в которой находится файл). Время создания — это значение crtime. Вы можете добавить | grep .[^ca]time, чтобы указать только mtime (время модификации) и crtime (время создания).

3 ответа 3

Команда stat может вывести это - (тире). Я думаю, это зависит от файловой системы, которую вы используете. статистика называет его "Время рождения". Однако на моем ext4 fs он пуст.

%w Время рождения файла, человекочитаемый; - если неизвестно

%W Время рождения файла, секунды с начала эпохи; 0, если неизвестно

Что делать, если у нас не установлена ​​команда stat и я не могу добавить команду stat в эту среду? bash: stat: команда не найдена

Упоминая %w, вы не говорите, как его использовать. Я бы предложил изменить этот ответ, чтобы показать пример команды для получения даты создания, если она не включена по умолчанию. Например, "stat -c %w файл"

Извините, но это просто неправильный ответ. Я просматриваю файл, созданный несколько дней назад, и он показывает мне, что время рождения было несколько часов назад.

Google сообщает мне: "Стандартная файловая система ext4 Linux также выделяет место для временной метки создания файла в своих внутренних структурах файловой системы, но это еще не реализовано. Иногда эта временная метка заполняется, но вы не может зависеть от значений в нем."

Linux предлагает три метки времени для файлов: время последнего доступа к содержимому (atime), время последнего изменения содержимого (mtime) и время последнего изменения индексного дескриптора (метаданные, ctime). Так что нет, нельзя. Однако mtime каталога соответствует последнему созданию или удалению файла.

Существует естественная путаница между ОС Linux и различными файловыми системами, которые можно использовать с Linux. Вы не можете просто делать общие заявления о Linux в отношении вещей, специфичных для файловых систем.

@yzorg Я думаю, что понимаю вашу точку зрения, но я не уверен, какое значение имеют объемы. Любая копия файла, даже с параметром cp -a, создаст новый индексный дескриптор, ctime которого будет соответствовать времени создания индексного дескриптора, но тем же самым mtime (который был в прошлом).

@yzorg Я этого не говорил. Я сказал, что если вы cp -a, он создаст новый inode, который будет иметь mtime. Объемы тут ни при чем

Нет, такой команды нет. В Unix время создания не сохраняется (только: доступ, модификация и изменение).

Некоторые файлы могут иметь метаданные (например, exif), в которых записана дата/время создания. Если все ваши файлы являются цифровыми фотографиями, у вас, скорее всего, есть эти данные. Вот пример использования Perl Image::ExifTool.

В основном это зависит от файловой системы, например, файловая система ext4 хранит дату создания файла.

Связано

Связанные

Горячие вопросы о сети

дизайн сайта / логотип © 2022 Stack Exchange Inc; вклады пользователей под лицензией cc by-sa. версия 2022.3.18.41718

Linux является зарегистрированным товарным знаком Линуса Торвальдса. UNIX является зарегистрированным товарным знаком The Open Group.
Этот сайт никоим образом не связан с Линусом Торвальдсом или The Open Group.

Файлы играют ключевую роль для вашей операционной системы, поскольку они необходимы для бесперебойной работы и правильной работы. Знание даты создания файла системных файлов иногда важно по соображениям безопасности, поскольку оно сообщает вам, когда файл был фактически создан. Например, если кто-то внес изменения в какой-либо системный файл, то вы можете легко найти, что какие-то изменения были внесены. Вы можете найти время создания любого файла с помощью утилиты под названием «debugfs», но для использования этой команды вам нужно сначала найти номер инода файла, который является уникальным номером, присваиваемым каждому новому файлу, когда он был сначала создан, поэтому для которые сначала создают тестовый файл, набрав.

После этого найдите индекс файла, введя:

Или вы также можете ввести:

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

На приведенном выше изображении /dev — это файл устройства, который присутствует в корневом каталоге, тогда как sda5 — это жесткий диск, принадлежащий ОС Linux, как показано ниже, и вы можете получить информацию об этом конкретном каталоге, набрав.

На приведенном выше изображении «crtime» указывает время создания определенного файла, и наряду с этим вы также можете увидеть «ctime», «atime» и «mtime».

Итак, на изображении выше mtime покажет вам время, когда файл был изменен или модифицирован в последний раз. Например, вы могли что-то добавить в файл, удалить что-то из файла или изменить содержимое файла.

Следующим является atime, представляющий, когда в последний раз к файлу обращались или читали, например, вы, возможно, открыли файл или использовали команду cat для чтения содержимого файла. Файл не был изменен или каким-либо образом изменен.

ctime не относится к изменениям, внесенным в содержимое файла. Скорее, это относится к моменту, когда информация о файле была обновлена, например, изменения в правах доступа к файлу.

Теперь давайте попробуем найти время создания любого системного файла, например «systemd», и для этого вам нужно сначала найти номер инода, набрав его.

Как видите, номер инода для файла «systemd» равен 131200, поэтому, чтобы найти время создания файла, вам нужно ввести его.

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

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

Если вы ищете конкретный файл, вам необходимо следовать приведенному ниже общему синтаксису:

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

$ ls -lc testfile.txt

$ ls -lu testfile.txt

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

Заключение

Операционная система Linux может иметь несколько пользователей, и иногда важно знать время создания файла, особенно для системных администраторов. Разные пользователи обладают разным опытом, поэтому для целей аудита необходимо знать, какой пользователь создает файл какого типа из соображений безопасности, так как он также может содержать вирусы.

В Unix-подобных системах, таких как Linux, все считается файлом, и вся информация о файле (метаданные или атрибуты файла, такие как время создания, последняя модификация и т. д.), за исключением фактического содержимого файла, хранится в inode, а Linux идентифицирует каждый файл по его номеру inode, отличному от удобочитаемого имени файла.

Кроме того, программа Linux stat является полезной утилитой для отображения состояния файла или файловой системы. Он показывает такую ​​информацию, как номер инода, время рождения файла, последнее изменение данных, последний доступ, последнее изменение статуса и многое другое. Мы объединим обе программы, чтобы найти фактическое время создания файла в Linux.

В этой статье мы объясним, как найти один из критических атрибутов файла с помощью программ debugfs и stat, чтобы получить следующую информацию о создании/доступе к файлу в файловых системах Linux.

  • ctime: показывает время изменения файла.
  • atime: показывает время доступа к файлу.
  • mtime: показывает время изменения файла.
  • crtime: показывает время создания файла.

Поиск даты создания файла в Linux

<р>1. Чтобы найти дату и время создания файла «crtime», нужно найти индекс файла с помощью команды stat для файла с именем «About-TecMint».

Кроме того, вы можете использовать команду ls -i для файла под названием «About-TecMint».

Из вывода приведенных выше команд номер индексного дескриптора файла — 14420015. Запишите этот уникальный номер индексного дескриптора, так как мы будем использовать этот номер индексного дескриптора в следующих шагах.

<р>2. Теперь нам нужно найти корневую файловую систему, в которой находится наш файл, просто введите следующую команду df -h, чтобы определить корневую файловую систему.

Из приведенного выше вывода файловая система для корневого раздела — /dev/sda10 (запишите эту файловую систему). В вашей системе это будет отличаться.

<р>3. Затем используйте команду debugfs, чтобы найти время создания файла с именем «About-TecMint» с флагом -R, который указывает debugfs выполнить единственную внешнюю команду, указанную с номером инода 14420015 (в данном случае stat), а затем выйти.

Из приведенного выше вывода видно, что файл «About-TecMint» был создан в понедельник 1 августа 10:26:36 2016 года, как это было предоставлено crtime. Вы также увидите «ctime», «atime» и «mtime» вашего файла.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Мы благодарны за вашу бесконечную поддержку.

Похожие записи

8 мыслей о «Команда DEBUGFS — показать время создания файла в Linux»

Работает ли это с файлами, которые были созданы на другом сервере, но были скопированы на сервер, где я могу выполнять указанные выше команды в интерфейсе командной строки?

Начиная с (по крайней мере) версии e2fsprogs 1.44.1 нет необходимости заранее узнавать номер инода, вы можете передать сам путь к файлу, опуская "", вот так…

Большое спасибо, что поделились этой полезной информацией.

Как дата изменения может опережать дату создания.

Или я что-то упустил?

Это правильное наблюдение, возможно, время на тестовой машине было неправильным, мы узнаем об этом больше, используя новый файл.

Мне не помогло:

Возможно, вы используете тип файловой системы EXT2 на своем разделе, это будет работать только на разделах EXT4.

Вы пропустили номер индексного дескриптора, что вызывает это сообщение об ошибке ext2_lookup, также на ext4

Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама.Узнайте, как обрабатываются данные ваших комментариев.

Читайте также: