извлечь несколько членов из архива tar и передать по сети

4554
Felipe Alvarez

редактировать: я хочу, чтобы экстра member01и member02и каталогblah/

tarball_1.tar.gzсодержит каталог test/с 20 файлами. Я хочу распаковать только директорию member test/member01и test/member02and blah/и скопировать их в другой «remote_host», используя ssh / scp.

Можно ли это сделать как однострочник? Я подумал об использовании tar, paxили, cpioно я думаю, я еще не очень разбираюсь в этих утилитах.

9

1 ответ на вопрос

15
atanamir
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file' 
  • -x : Экстракт
  • -z : Через gzip
  • -f : Взять в качестве входного файла.
  • -O : Извлечь в стандартный вывод

file_you_want_to_extractИзвлекается из file.tar.gzстандартной продукции, который поступает в ssh, который работает catна удаленном хосте, и записывает его в стандарт на пульте дистанционного управления destination_file. Конечно, вы захотите убедиться, что у вас есть разрешение на запись в нужный файл на удаленном хосте.

Я не был понятен в моей первоначальной публикации :) Мне нужно извлечь более одного участника, плюс каталог. Felipe Alvarez 13 лет назад 0
должен быть tar -xz0f: после `f` следует имя архива Felipe Alvarez 13 лет назад 0
Извлечение нескольких членов может стать беспорядочным, если вы хотите, чтобы они были однострочными, поскольку извлечение нескольких файлов в стандартный вывод не имеет смысла. Вероятно, вам придется `tar` для каждого файла, который вы хотите извлечь, затем используйте` scp -r member1 member2 blah user @ host: / destination / folder / `, чтобы скопировать их. Если вы действительно хотите сделать его однострочным, вы можете объединить все эти команды с помощью `&&`. Более практичный вариант - просто создать скрипт, который перебирает параметры командной строки и выполняет `tar` для каждого из них, а затем` scp`s все из них в конце. atanamir 13 лет назад 1
аааа, понятно Так что нет «простого» однострочного метода. Спасибо :-) Felipe Alvarez 13 лет назад 0
В качестве альтернативы, если «одна строка» важнее, чем «сколько времени это займет», вы можете передать весь архив через ssh и извлечь нужные элементы с другой стороны «cat file.tar.gz | ssh user @ host ' tar zxvf file1 file2 dir1 ' Colin 9 лет назад 2

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