먼저 디스크에 생성하지 않고 프로그램 출력에서 tar 아카이브에 파일을 추가하려고합니다. 빌드 스크립트가 실행될 때 VERSION
파일이 자동 생성됩니다. 이 시도하지만 간접 참조 심볼릭 정규 파일 만 네임드 파이프 아니다 : 결과 타르 아카이브에 타임 스탬프와 함께 파일 VERSION
이어야stdin을 tar 아카이브에 다른 파일로 추가
$ date +%s | \
tar cf test.tar \
--dereference \
--transform="s#/proc/self/fd/0#VERSION#" \
/proc/self/fd/0 \
other_files \
and_folders/
w/로컬 파일 생성 O :
을$ tar tf test.tar
VERSION
other_files
and_folders
감사! 그것은 기본적으로 지금 제가 어떻게하고 있는지를 보여줍니다. '--transform = s/tempfile/VERSION /'을 사용하여 아카이브에 추가 한 다음 삭제하십시오. 나는이 단계를 일종의 파이프 마술과 좀 더 간결하게하기를 바랐다. – Boldewyn
TAR에 파일 이름을 줄 수 없으며 파이프를 통해 콘텐츠를 제공 할 수 없으므로이를 수행하는 유일한 방법입니다. '/ proc/self/fd/0'는'tar'가 링크를 내용을 확장하는 대신 특수 파일로 저장하기 때문에 작동하지 않습니다. 나는 또한'--dereference'가이 경우에 그것을 해제하지 않는다는 것에 놀랐습니다. –
글쎄,'--dereference'는 영향을 미칩니다 : 없으면'/ proc/self/fd/0'은 심볼릭 링크로 남습니다. 이름이 붙은 파이프 ('ls -F'가'| '). 하지만 압축 된 파이프는 제한된 용도로만 사용됩니다 ... – Boldewyn