2017-01-11 1 views
0

tar 파일이 유효한지 확인하는 스크립트가 있습니다. 나는이 예제에서 cat을 사용하고 있지만, 정말 난에 스트리밍 아마존 S3 파일의 유효성을 검사하고있다.tar.gz가 손상되지 않았 음을 확인하십시오.

#!/bin/bash 
cat $1 | tar zxf - > /dev/null 
if [ $? -eq 0 ]; then 
    echo "File is ok ... $1" 
else 
    echo "File is corrupted ... $1" 
fi 

문제는 tar 파일은 .tar.gz를에있는 파일을 추출합니다. tar -C /dev/null과 같은 다양한 변형을 시도했지만 운이 없었습니다. 실패하거나 파일을 디스크로 출력합니다.

파일을 쓰지 않고 어떻게 tar 파일을 추출합니까? 파일 목록을 가져 오는 다른 게시물이 tar t입니다. 하지만 나는 단지 파일 목록을 가져 오는 것이 타르가 담고있는 파일의 무결성을 확인한다는 것을 100 % 확신하지는 못합니다.

+1

fyi - 'cat $ 1'은 버그가 있습니다 (파일 이름이 .tar.gz 인 경우'space'라는 파일을'with '라는 파일과 세 번째 파일을 연결하려고 시도합니다 'filenames.tar.gz'라고 부름); 따옴표를 사용하십시오 :'cat "$ 1"'또는 그 이상으로 사용하지 마십시오 ('tar zxf "$ 1"'). –

+0

또한 파일을 실제로 쓰지 않으려면'x' (추출)을 사용하지 마십시오. –

+1

또한'$ '를 검사하지 말고'if'에 직접 테스트하고자하는 것을 넣을 수 있습니다 :'if tar tzf "$ 1"; then echo "File is ok"; else echo "File is corrupt"; fi' –

답변

1

가능하면 S3 버킷의 파일에 해시를 생성 한 다음 파일을 다운로드 한 후이를 해시와 비교합니다.

+0

예. 이상적인 세계에서 콘텐츠 해시 스토리지를 사용하기 때문에 버킷의 * 이름 * 또한 체크섬이므로이 경우 확인하는 데 필요한 파일 형식에 대한 지식이 전혀 없습니다. –

+0

이들은 콘솔에서 공급 업체가 내 보낸 파일입니다. 액세스 권한이 없습니다. 나는 원본을 체크섬 할 수있는 방법이 없다. 그렇지 않다면 나는 단순한 md5를했을 것이다. – ForeverConfused

관련 문제