extraer algunos miembros del archivo tar y canalizarlos a través de la red

9

Edit: Quiero adicional member01y member02y el directorioblah/

tarball_1.tar.gzcontiene directorio test/con 20 archivos. Quiero extraer solo los miembros test/member01y el test/member02directorio blah/y copiarlos a otro "remote_host" usando ssh / scp.

¿Se puede hacer esto de una sola vez? Pensé en usar tar, paxo cpiopero supongo que todavía no soy muy hábil con estas utilidades.

Felipe Alvarez
fuente

Respuestas:

15
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file'
  • -x : Extracto
  • -z : Mediante gzip
  • -f : Tome un archivo como entrada.
  • -O : Extracto a stdout

los file_you_want_to_extract extrae de file.tar.gza la salida estándar, se canaliza a ssh, que se ejecuta caten el host remoto y escribe su estándar en el remoto destination_file. Por supuesto, querrá asegurarse de tener permiso de escritura para el archivo de destino deseado en el host remoto.

atanamir
fuente
No estaba claro en mi publicación original :) Necesito extraer más de un miembro, más un directorio.
Felipe Alvarez
debe ser tar -xz0f: después fviene el nombre del archivo
Felipe Alvarez
1
Extraer varios miembros se volverá complicado si desea que sean unifilares, ya que extraer varios archivos a stdout no tiene mucho sentido. Probablemente tendrá que hacerlo tarpara cada uno que desee extraer, luego use scp -r member1 member2 blah user@host:/destination/folder/para copiarlos. Si realmente desea que sea una línea, puede concatenar todos esos comandos con &&. Una opción más práctica es crear un script que recorra las opciones de la línea de comandos y se ejecute tarpara cada una de ellas y luego scptodas al final.
atanamir
ahhhhh, ya veo. Por lo tanto, no existe un método "sencillo" de una sola línea. Gracias :-)
Felipe Alvarez
2
Alternativamente, si "one-liner" es más importante que "cuánto tiempo toma", puede canalizar todo el archivo a través de ssh y extraer los miembros que desee en el otro lado "cat file.tar.gz | ssh user @ host ' tar zxvf file1 file2 dir1 '
Colin