Команда подстановки и поиска. Разница между инкапсуляцией подстановки в " " и не

Используя функцию «Отправить/получить» в ZFS, вы можете использовать ее только со снимками, и нет необходимости размонтировать наборы данных. Вы не сможете отправить/получить том.

The zfs send command creates a stream representation of a snapshot that is written to standard output. By default, a full stream is generated. You can redirect the output to a file or to a different system. The zfs receive command creates a snapshot whose contents are specified in the stream that is provided on standard input. If a full stream is received, a new file system is created as well. You can send ZFS snapshot data and receive ZFS snapshot data and file systems with these commands.

Правильные команды::

zfs send tank/data@snap1 | zfs recv spool/ds01

Лучшим способом отправки и получения снимка zfs является использование mbuffer , чтобы свести к минимуму риск задержки ввода-вывода и заполнить сетевой буфер.

На отправляющем аппарате:

zfs send pool/image@test | mbuffer -s 128k -m 1G -O 127.0.0.1:9090

На принимающей машине:

mbuffer -s 128k -m 1G -I 9090 | zfs receive -F pool/image1

Так как вы можете использовать 127.0.0.1 для той же машины или xx.xx.xx.xx для удаленной машины.

Источник:https://docs.oracle.com/cd/E18752_01/html/819-5461/gbchx.html

0
16.10.2019, 09:06
1 ответ

Подстановочные знаки раскрываются оболочкой, а не командой. find— одна из немногих команд, выполняющих сопоставление с подстановочными знаками, аналогичное оболочке, в свое время.

Когда вы запускаете ls *.jav, сначала оболочка расширяет *.javдо списка соответствующих файлов, например. file1.javfile2.javfile3.jav, а затем оболочка вызывает lsс результирующим списком аргументов file1.javfile2.javfile3.jav. Вот почему вы видите тот же список имен файлов с echo *.jav, хотя echoничего не знает о файлах и не заботится о том, являются ли его аргументы именами файлов.

Когда вы бежитеfind. -name "*.jav":

  1. Оболочка анализирует командную строку для распознавания специальных символов и разбивает ее на слова и знаки препинания. Здесь просто список слов find, ., -name, *.jav, где *цитируется. Поскольку *взят в кавычки, это обычный символ с точки зрения оболочки.
  2. Оболочка запускает команду findс указанным списком аргументов :., -name, *.jav.
  3. findищет файлы, имя которых соответствует шаблону *.javв любом каталоге в текущем каталоге.

При запуске find. -name *.javи отсутствии файлов, соответствующих*.jav:

  1. Оболочка анализирует командную строку для распознавания специальных символов и разбивает ее на слова и знаки препинания. Здесь просто список слов find, ., -name, *.jav, где *не заключено в кавычки.
  2. Поскольку слово *.javсодержит подстановочный знак без кавычек, оболочка выполняет генерацию имени файла. Поскольку соответствующих имен файлов нет, шаблон остается нераскрытым.
  3. Оболочка запускает команду findс полученным списком аргументов: ., -name, *.jav.
  4. findищет файлы, имя которых соответствует шаблону *.javв любом каталоге в текущем каталоге.

Когда вы запускаете find. -name *.javи текущий каталог содержит file1.jav, file2.javиfile3.jav:

  1. Оболочка анализирует командную строку для распознавания специальных символов и разбивает ее на слова и знаки препинания. Здесь просто список слов find, ., -name, *.jav, где *не заключено в кавычки.
  2. Поскольку слово *.javсодержит подстановочный знак без кавычек, оболочка выполняет генерацию имени файла :*.jav, заменяется списком совпадающих имен файлов.
  3. Оболочка запускает команду findс результирующим списком аргументов: ., -name, file1.jav, file2.jav, file3.jav.
  4. findжалуется на синтаксическую ошибку, когда достигает file2.jav.

Когда вы запускаете find. -name *.javи текущий каталог содержит один соответствующий файлfile.jav:

  1. Оболочка анализирует командную строку для распознавания специальных символов и разбивает ее на слова и знаки препинания. Здесь просто список слов find, ., -name, *.jav, где *не заключено в кавычки.
  2. Поскольку слово *.javсодержит подстановочный знак без кавычек, оболочка выполняет генерацию имени файла.:*.javзаменяется списком совпадающих имен файлов.
  3. Оболочка запускает команду findс полученным списком аргументов: ., -name, file.jav.
  4. findвидит вполне допустимую команду, но, вероятно, это не то, что вы хотели.:findсказано искать файлы с именем file.javв любом каталоге, а не искать какой-либо файл, соответствующий *.jav.

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

(То, что я описываю, является поведением по умолчанию большинства распространенных оболочек :sh, bash, dash, ksh, … Некоторые оболочки могут быть настроены для отображения ошибки вместо запуска команды с нерасширенными подстановочными знаками или для расширения не -сопоставление подстановочных знаков пустому списку.Ни один из них не поможет здесь.)

2
28.01.2020, 02:29

Теги

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