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 % 확신하지는 못합니다.
fyi - 'cat $ 1'은 버그가 있습니다 (파일 이름이 .tar.gz 인 경우'space'라는 파일을'with '라는 파일과 세 번째 파일을 연결하려고 시도합니다 'filenames.tar.gz'라고 부름); 따옴표를 사용하십시오 :'cat "$ 1"'또는 그 이상으로 사용하지 마십시오 ('tar zxf "$ 1"'). –
또한 파일을 실제로 쓰지 않으려면'x' (추출)을 사용하지 마십시오. –
또한'$ '를 검사하지 말고'if'에 직접 테스트하고자하는 것을 넣을 수 있습니다 :'if tar tzf "$ 1"; then echo "File is ok"; else echo "File is corrupt"; fi' –