tar 아카이브에서 몇 명의 멤버를 추출하고 네트워크를 통해 파이프


9

편집 : 나는 추가로 원하는 member01member02및 디렉토리blah/

tarball_1.tar.gztest/20 개의 파일 이있는 디렉토리 를 포함 합니다. 멤버 test/member01test/member02디렉토리 만 추출 하고 blah/ssh / scp를 사용하여 다른 "remote_host"에 복사하고 싶습니다 .

이것을 한 줄짜리로 할 수 있습니까? 내가 사용으로 간주 tar, pax또는 cpio하지만 난 아주 아직 이러한 유틸리티와 숙련되지 것 같아.

답변:


15
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file'
  • -x : 추출
  • -z : 통해 gzip
  • -f : 파일을 입력으로 가져옵니다.
  • -O : stdout으로 추출

file_you_want_to_extract추출되는 file.tar.gz표준 출력으로 파이프를 ssh실행하는 cat원격 호스트와 원격에 표준을 쓴다 destination_file. 물론 원격 호스트의 원하는 대상 파일에 대한 쓰기 권한이 있는지 확인해야합니다.


나는 원래의 게시물에서 명확하지 않았다 :) 디렉토리와 함께 둘 이상의 회원을 추출해야합니다.
Felipe Alvarez

tar -xz0f이어야 함 : 이후 f아카이브 이름 제공
Felipe Alvarez

1
stdout에 여러 파일을 추출하는 것은 의미가 없으므로 여러 멤버를 추출하면 하나의 라이너가되기를 원할 경우 혼란스러워집니다. 당신은 아마 할 것이다 tar다음 사용하여 추출 할 각 하나 scp -r member1 member2 blah user@host:/destination/folder/에 복사 할 수 있습니다. 실제로 한 줄로 만들고 싶다면 모든 명령을로 연결하십시오 &&. 보다 실용적인 옵션은 스크립트를 작성하여 명령 행 옵션을 반복 tar하고 각 옵션 마다 실행 한 다음 scp마지막에 모두 실행하는 것입니다.
atanamir

아 아아아 따라서 "쉬운"단일 라이너 방법은 없습니다. 감사합니다 :-)
Felipe Alvarez 9

2
또는 "한 줄짜리"가 "얼마나 오래 걸리는가"보다 중요한 경우 전체 아카이브를 ssh를 통해 파이프하고 다른 쪽 "cat file.tar.gz | ssh user @ host '에서 원하는 멤버를 추출 할 수 있습니다. tar zxvf file1 file2 dir1 '
콜린
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.