BASH를 사용하여 Tar에 연결하는 방법은 무엇입니까?

BASH를 사용하여 Tar에 연결하는 방법은 무엇입니까?

긴 이야기 짧게

저는 Base64로 인코딩된 PNG 이미지가 포함된 Tar 아카이브로 작업하고 있습니다. 파일의 압축을 푼 후 PNG 이미지를 base64 인코딩에서 표준 PNG 인코딩으로 디코딩하기 위해 Tar의 추출 기능에 연결된 BASH(또는 기타 효율적인 방법)를 사용하고 싶습니다. 간단한 조작으로 cat $input_file | base64 -d >$output_file이미지를 성공적으로 디코딩할 수 있습니다.

사용자가 이미지를 디코딩하기 위해 추가 작업을 수행할 필요가 없도록 tar -xf에 연결하는 방법이 있습니까?

내부에GNU Tar 문서나는 Tar 프로그램 실행의 다양한 지점에서 내가 연결하고 싶은 함수의 이름을 유지하기 위해 일부 변수가 실제로 유지된다는 것을 발견했습니다. 그러나 설명서에서는 이러한 변수가 Tar를 구성하기 위해 설정할 수 있는 다른 변수와 함께 backup-specs라는 파일에 있다고 설명합니다. 안타깝게도 파일 경로가 제공되지 않습니다. 또한 실행하면 sudo find / -name backup-specs이 파일이 내 Ubuntu 버전 13.04 시스템에 존재하지 않는다는 메시지가 나타납니다.

TL;DR에 포함되지 않은 배경 정보

저는 브라우저 기반(WebGL) 입자 효과 생성 애플리케이션을 개발해 왔습니다(http://www.articleeff.org), (https://github.com/cgrabowski/webgl-article-효과-editor), (https://github.com/cgrabowski/webgl-article-효과). 저는 효과 데이터를 tar 아카이브로 저장하고 로드하기 위한 클라이언트 전용 솔루션을 작성하기 시작했습니다. 그러나 바이너리 데이터를 처리하는 클라이언트 측 JavaScript의 제한된 기능으로 인해 효과에서 텍스처로 사용되는 이미지는 Base64 인코딩으로 저장됩니다. 효과 데이터를 Tar 아카이브로 저장할 수 있었습니다(아직 Github에 푸시하지 않았습니다). 그러나 Tar 아카이브의 이미지는 Base64 인코딩에서 디코딩되지 않으면 조작할 수 없습니다.

답변1

--to-command다음 옵션을 사용하고 싶습니다 tar.

tar xf tarfile.tar --to-command='sh -c "mkdir -p $(dirname $TAR_FILENAME) && base64 -d > $TAR_FILENAME"'

이는 매뉴얼에 설명되어 있습니다.여기.

backup-specs은 매뉴얼에서 배포된다고 주장하는 백업 시스템의 일부이지만 tar내 시스템에는 이것이 없으며 적어도 더 이상은 실제로 사용되지 않는 것 같습니다.

관련 정보