Может кто-нибудь объяснить мне, что делают флаги CPIO в этой команде: gzip -cd /boot/initrd-xxxxxxxxx.img | cpio -imd - тихая находка. | cpio -co

У меня есть эта команда в CPIO, и я знаю, что она в основном извлекает initrd, но что конкретно делает CPIO? (man cpio и info cpio было слишком сложно понять), поэтому я не мог понять, что CPIO делает в этой команде.

gzip -cd /boot/initrd-xxxxxxxxx.img | cpio -imd --quiet ;
find . | cpio   -co

В основном, что означает «cpio -imd» против «cpio -co»?

0
задан 27 January 2015 в 09:21

2 ответа

-i и -o по существу cpio команды для извлечения файлов от (копия - в), и добавление файлов, чтобы (скопировать), архив.

Опции:

  • -c

    Use the old portable (ASCII) archive format. 
    
  • -d, --make-directories

    Create leading directories where needed.
    

    Если Ваш архив содержит a/b/c/d/f, и папка, к которой Вы извлекаете только, содержит a/b, затем a/b/c и a/b/c/d каталоги будут автоматически созданы cpio.

  • -m, --preserve-modification-time

    Retain previous file modification times when creating files. 
    

-c опция, по-видимому, добавляется для совместимости. -m опция означает, что время изменения файла, когда это было заархивировано, используется вместо текущего времени. Это может или не может быть полезно в зависимости от задачи. (Например, резервные копии, возможно, ожидали сохранять его, но нельзя быть необходимо, если все, о чем Вы заботитесь, - то, что у Вас есть копия содержания файла.)

Имейте взгляд на эту несколько старую Статью в журнале Linux на cpio.

0
ответ дан 27 January 2015 в 09:21

Огромное спасибо!!! Ваша информация была ОЧЕНЬ ПОЛЕЗНА! Я надеюсь, что разработчики CPIO могут исправить страницы справочника для cpio, поскольку очень трудно понять.

В случае, если другие читают этот поток, это было из ссылки, Вы помогли мне и ДЕЙСТВИТЕЛЬНО помогли мне понять то, что точно CPIO и почему это используется в противоположность tar или zip или rpm/nash/initrd и т.д....:

cpio может создать и извлечь архивы на дискете, ленте или в файлах с помощью восьми различных форматов архива, включая tar. Это может также создать почти идеальный дубликат дерева каталогов, сохранив принадлежность файла, режимы, и времена доступа. Так как cpio разработан, чтобы принять список файлов, таких как вывод ls или найти, он больше подходит для всесторонних систем резервного копирования, чем инструменты как стандартный tar; набором обработанных файлов можно легко управлять программно.

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

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

Поскольку его имя подразумевает в режиме передачи cpio действия как кабелепровод для копирования списков файлов от одного места назначения другому. Способность сделать это при создании подкаталогов по мере необходимости и обработке специальных файлов делает это решающим инструментом для любого системного администратора, чтобы быть знакомым с.

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

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

Другой должен использовать рекурсивный режим CP для копирования их непосредственно. Этот режим копирует только регулярные файлы и ссылки. Это также переходит по символьным ссылкам, которые могут копировать много файлов при небрежном использовании.

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

$ находят. - глубина | cpio - передача \-сохранять-время-изменения \-делать-каталоги - подробный/mnt/export

Эта команда причины находит для вывода названия каждого файла в соответствии с существующим каталогом. (-опция глубины обеспечивает, чтобы имена каталогов были произведены перед названиями файлов в них.) cpio читает эти имена файлов в и копирует их в/mnt/export.

Переключатели, переданные cpio:

- передача-throughOperate в режиме передачи.

- preserve-modification-timesSet время изменения новых файлов к preserve-modification-timesSet старых.

- сделайте-directoriesCreate каталоги при необходимости. (Эта опция работает при восстановлении архивов, также.)

- режим verboseVerbose. Этот режим произведет вывод для всех файлов. Альтернатива - точечная опция, которая только производит a. для каждого обработанного файла. (Эти опции работают во всех режимах.)

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

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

Создайте режим

Создайте режим, создает архивные файлы. (Это также упоминается как режим “копии”.) cpio принимает список имен файлов, как он делает в режиме передачи. Но вместо того, чтобы создать дубликаты файлов в другой области, это создает архив и отправляет его в стандартный вывод.

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

$ находят - глубина/export/home \| cpio - создает>/dev/fd0

Это создает архив/export/home дерева каталогов на дисководе для гибких дисков в/dev/fd0. Конечно,/export/home область, вероятно, не будет соответствовать на одной дискете, но подсказках cpio для другого имени устройства или имени файла, когда каждая дискета заполнена, таким образом, это может быть заменено, и пользователь может ввести имя устройства снова. (Обратите внимание, что находка - переключателю глубины все еще рекомендуют предотвратить возможные проблемы, когда архив извлечен.)

Когда дело доходит до создания архивов cpio имеет много опций. Один из самых важных является форматом архива.

мусорное ведро (значение по умолчанию) двоичный формат кодирует файлы в непортативном методе. Поэтому это не подходит для обмена файлами между Linux на ПК и Linux на другой архитектуре, такой как Alpha или Питание ПК.

odcold (POSIX.1) мобильный формат. Это портативно через платформы, но не подходит для файловых систем больше чем с 65 536 inodes, что означает большинство сегодняшних более крупных жестких дисков.

мобильный формат newcnew. Это портативно через платформы и не имеет никакого свойственного предела на количество inodes.

мобильный формат crcnew, с добавленной контрольной суммой.

tarcompatible с tar, но только поддерживает имена файлов до 100 символов.

формат tar ustarnew. Поддержки до 255 символьных имен файлов.

hpbinnon-мобильный-формат используется HP/UX.

hpodc “портативный” формат используется HP/UX. Файлы устройств хранилищ по-другому.

Формат архива указан с - переключатель формата.

Из всех форматов crc формат является, вероятно, лучшим, так как это портативно и имеет дополнительную степень проверки ошибок через контрольную сумму.

Лучший метод для создания архива был бы:

$ находят/export/home - глубина | cpio - создает \-сообщение = "Вставляет следующий диск и тип/dev/fd0" \-format=crc>/dev/fd0

Это использует crc формат для архива и предлагает пользователю со Вставкой следующий диск и тип/dev/fd0, поскольку каждая дискета заполнена. - параметр сообщения, который работает и в создает и извлекает режим, заменяет сообщение по умолчанию.

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

Даже при том, что tar GNU действительно имеет многие преимущества cpio, способность использовать находят, чтобы указать, что файлы, которые будут сохранены, обеспечивают намного больше гибкости, чем подстановочные знаки оболочки. [Можно сделать это с tar также, но необходимо отправить вывод находки в файл и использовать тот файл, поскольку “включают файл” для tar — ED] Режим Извлечения

Режим извлечения (также называемый “копией - в” режиме) извлекает файлы из архивов. Этот режим несовместим с другими двумя, так как имена файлов указаны на командной строке, вместо с помощью списка на стандартном входе.

$ cpio - извлечение </dev/fd0

Эта команда восстанавливает все файлы из архива в/dev/fd0, так как никакие имена файлов не были указаны. Если архив охватит больше чем один объем, то cpio запросит каждый объем тем же путем, он делает, когда архивы создаются. - параметр сообщения может использоваться для переопределения сообщения по умолчанию, поскольку в создают режим.

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

Путь, переданный cpio находкой, хранится в архиве. Поэтому важно обратить внимание на то, как находка используется.

@@@@@@ Так.... в основном для СОЗДАНИЯ Вас делают это, для создания cpio файла или гибкого диска: $ находят. - глубина | cpio - создают>/tmp/archive

Это создает архив, который извлекает в существующий рабочий каталог.

$ находят/export/home - глубина | cpio - создает \

/tmp/archive

Это создает архив, который попытается извлечь к/export/home, независимо от обстоятельств. Если-d опция указана, каталог создается, если это уже не существует. (Если/export/home не будет существовать, и-d опущен, то извлечение перестанет работать.)

Что-либо указанное на командной строке, которая не является опцией, рассматривают как шаблон имени файла.

$ cpio - извлекают "назад" </dev/fd0

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

$ cpio - извлечение "назад" "сохраняют" </dev/fd0

Это извлечет файлы со “спиной” или “сохранит” на их имена.

В дополнение к обеспечению шаблонов на командной строке им можно предоставить как строки в файле. Файл указан с - pattern-file=filename опция. Это обеспечивает большую гибкость в восстановлении файлов, так как фактический путь не должен быть известен, и подстановочные знаки не нужны. Часто восстанавливаемые шаблоны могут быть сохранены в файле.

- несоответствие опции используется для определения файлов для не извлечения.

Это может помочь видеть содержание архива прежде, чем извлечь что-либо из него.

$ cpio - список </dev/fd0

- перечисляют списки опций содержание архива. Опция - numeric-uid-gid вынуждает список показать пользователю и идентификаторам группы численно, вместо того, чтобы пытаться разрешить имена с файлами группы и passwd.

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

$ находят/export/home - глубина | cpio - создает \-файл =/vol/archive

Эта опция работает или на создание или на извлечение архивов. Для использования диска удаленной ленты указывают имя хоста и имя пользователя перед именем файла. (У пользователя должен быть доступ к удаленному хосту без пароля. Это может быть сделано при помощи файла .rhosts),

$ находят/export/home - глубина | cpio - создает \-file=eric@bajor:/dev/rmt0

Одно из главных преимуществ создания архивов с этой опцией - то, что дисковые файлы (архивы не на ленте или дискете) созданный с этой опцией могут быть добавлены к с - добавляют опцию.

Эта команда будет работать, если eric не будет иметь никакого пароля, (не рекомендуемый) или если хост, что на команде работают, перечислен в .rhosts файле в корневом каталоге eric.

При восстановлении архива иногда желательно не изменить время изменения файла:

$ находят/export/home - глубину | cpio - извлечение \-сохранять-время-изменения - файл/vol/archive

- опция сохранять-времени-изменения работает в режиме извлечения, кроме того, для прохождения через режим.

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

$ находят. - глубина | cpio - передача \-делать-каталоги - сохранять-время-изменения \-время доступа сброса/vol/copy

Это скопирует текущий каталог в/vol/copy при копировании времени изменения на старых файлах к новому и также оставлении времен доступа на исходных файлах нетронутыми.

Действие по умолчанию для cpio, при работе в копии - в (извлечении) или режиме передачи, должно предложить пользователю подтверждение прежде, чем переписать существующие файлы, если существующий файл является более новым. По умолчанию cpio не заменит существующие файлы. - безусловная опция переопределяет то поведение:

$ cpio - извлечение - безусловная "спина" "сохраняют" \</dev/fd0

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

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

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

@@@@ Так.... в основном для ИЗВЛЕЧЕНИЯ Вас делают это, действительно извлеките из cpio файла или гибкого диска:

$ cpio - извлечение - owner=Cloud. Борьба </dev/fd0

Это восстановит архив на/dev/fd0 и установит владельца всех извлеченных файлов к eric и группы штату. Только корень может использовать эту опцию. Если группа будет не учтена, то она не будет изменена если. включен, в этом случае группа будет установлена на группу входа в систему пользователя.

Другая опция, связанная с принадлежностью файла, - no-preserve-owner. Это - поведение по умолчанию для некорневых пользователей. Файлы будут принадлежать пользователю, копирующему или извлекающему их вместо исходного пользователя. Для корня значение по умолчанию должно сохранить владение.

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

0
ответ дан 6 October 2019 в 03:04

Другие вопросы по тегам:

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