타르 및 gzip의 배관


11

명령에서 gzip, cpio 또는 tar와 같은 것으로 파이프하는 방법에 대한 핸들을 얻으려고합니다.

해당 명령은 ZFS 시스템에 속합니다. Ubuntu Linux 10.04.3에서 ZFS를 실행하고 있습니다.

내가 작업하는 명령은 다음과 같습니다.

To create a snapshot;
zfs snapshot media/mypictures@20070607

To copy the snapshot to a directory;
zfs send media/mypictures@20070607 > ~/backups/20070607

Then I can also pipe into gzip
zfs send media/mypictures@20070607 | gzip > ~/backups/20070607.gz

이 부분은 이해합니다.

그러나 첫 번째 질문은 tar + gzip으로 파이프하는 방법은 무엇입니까?

이?

zfs send media/mypictures@20070607 | tar czvf > ~/backups/20070607.tar.gz

그리고 내 다른 질문은 tarball 또는 gzip에서 데이터를 어떻게 가져올 수 있습니까?

나는 사용해야한다 zfs recieve media/mypictures@20070607 < ~/backups/20070607

내가 타르를 사용한다면 이것이 이것일까요?

zfs recieve media/mypictures@20070607 | tar xzvf < ~/backups/20070607.tar.gz

어떤 생각?

답변:


10

tar명령 줄 인수로 파일 이름 목록이 제공 될 것으로 예상됩니다. 내가 아는 한 익명 파이프 라인을 읽는 데 사용할 수 없습니다 (파일 이름 및 파일 메타 데이터로 무엇을 저장합니까?)

$ echo aaa | tar cv > f.tar
tar: Cowardly refusing to create an empty archive
Try `tar --help' for more information.

데이터가 단일 논리 항목 또는 스트림 인 경우 별도의 파일 세트를 그룹화하는 데 사용되는 tar와 같은 것을 사용할 필요가 없습니다.

그렇지 않으면 데이터를 파일에 먼저 쓰고 파일을 tar 한 다음 파일을 삭제해야합니다.


정말? tar는 압축의 또 다른 형태 일뿐입니다. 타르를 건너 뛰고 그냥 gzip?
ianc1215

3
네, 바로 사용zfs send media/mypictures@20070607 | gzip -c > ~/backups/20070607.gz
RedGrittyBrick

2
Tar -f옵션 을 지정하지 않으면 파일 이름 목록을 기대하지 않습니다 (tar는 f"-"없이 허용 ).
drevicko

1
@ 드레 비코 : 질문의 맥락은 타르 아카이브를 만드는 것입니다. 내가 의미하는 파일 목록은 작성된 아카이브에 포함될 파일 (및 / 또는 디렉토리)의 목록입니다. 예를 들면 다음과 같습니다 cd /etc; TAPE=/tmp/rgb.tar tar c hosts passwd. 파일 목록은hosts passwd
RedGrittyBrick

2
@RedGrittyBrick 그러나 문제의 맥락은 파이프에서 tar하는 것입니다. 즉, 파일 목록이 없습니다. tar가 파일 목록을 기대한다고 말하는 것은 사실이 아닙니다. 문제는 OP가을 지정할 때 (단일) 출력 파일 이름이 필요하고 파일 이름을 f제공하지 않았다는 것입니다.
drevicko

10

-f옵션은 파일을 지정합니다. 그렇지 않으면 출력이 stdout으로 이동합니다. 따라서 리디렉션을 삭제하십시오.

zfs send media/mypictures@20070607 | tar czvf ~/backups/20070607.tar.gz

또는 f옵션을 삭제하십시오 .

zfs send media/mypictures@20070607 | tar czv > ~/backups/20070607.tar.gz

untarring과 마찬가지로.


이것이 실제로 작동합니까? 모두 echo "hello" | tar czvf foo.tar.gzecho "hello" | tar czv > foo.tar.gz나를 위해 실패합니다.
425nesp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.