같은사이즈파일들이 있는 두개의 폴더를 tar압축시 사이즈가 틀립니다.
글쓴이: jw0717 / 작성시간: 화, 2006/01/24 - 11:22오전
a 란 디렉토리에 1,2,3~100 개의 파일이 있고
b 란 디렉토리에 1,2,3~100 개의 파일이있습니다.
1~100 개의 파일은 같은파일입니다.
tar cvzf a.tar.gz a/
tar cvzf b.tar.gz b/
하고 나니
ls -al
506160026 a.tar.gz
506160364 b.tar.gz
이렇게 사이즈가 약간차이나네요
압축하는동안 에러난것도 없고 그런데 어떤이유일까요??
Forums:
디렉토리 이름에 의해 영향을 받았을수도 있습니다.한번 이렇게 실험
디렉토리 이름에 의해 영향을 받았을수도 있습니다.
한번 이렇게 실험(?) 해보세요.
a라는 디렉토리에 있는건 그대로 두시고
b라는 놈을 다른 빈 디렉토리를 만들어서 옴기세요.
예:
/home/blah/a
/home/blah/b -> /home/blah/other/a
이렇게 바꿔보시고 각각 디렉토리 상에서 압축해보세요.
예:
tar cvzf a.tar.gz a/
cd other
tar cvzf b.tar.gz a/
특별한 영향을 미치는것이 없는한 해보시면 크기가 같게 나올거라고 예상됩니다.
RET ;My life :P
질문이 미흡했군요..디렉토리이름또한 같습니다./d/a/
질문이 미흡했군요..
디렉토리이름또한 같습니다.
/d/a
/f/a 입니다.
/d 밑에서 tar cvzf a.tar.gz a/
/f 밑에서 tar cvzf a.tar.gz a/했습니다.
그런데 사이즈가 틀리네요..음...
tar tf a.tar.gz | sed 's/^..//' | sort &
tar tf a.tar.gz | sed 's/^..//' | sort > a.list
tar tf b.tar.gz | sed 's/^..//' | sort > b.list
sed로 줄 앞의 글자를 필요한 만큼 지우고 목록을 만들어 비교합니다.
diff -u a.list b.list
결과가 같은가요, 다른가요? 말씀해주신 상황에 대해 확실히 모르겠지만, 숨김파일이 있는 경우 압축파일의 크기가 달라질 수 있는 것을 확인했습니다.
음 물론 히든파일은 없습니다.이것저것 해보다가 의심(??)되는게 한
음 물론 히든파일은 없습니다.
이것저것 해보다가 의심(??)되는게 한가지 있군요
/d/a
/f/a 라고 할때
/d/a 디렉토리에서 ls -al
/f/a 디렉토리에서 ls -al 했을때
현재 디렉토리를 표시하는(./) 것은 같지만(a/)
상위 디렉토리(../) 는 /d, /f 가 틀려서 이거 사이즈는 좀 틀리군요..
혹 이것때문인지... 상위 디렉토리도 같게해서 함 테스트 해봐야겠습니다.
그럼 diff -qr /d/a /f/a 하시면 뭐라고 나오나요?
그럼 diff -qr /d/a /f/a 하시면 뭐라고 나오나요?
[quote="검은해"]그럼 diff -qr /d/a /f/a 하시면 뭐
틀린게 안나오네요..
그런데 한가지 궁금한거
/1/a /2/a란 디렉토리가있을때
1디렉토리에서 ls -al 햇을때
a 란 디렉토리사이즈가 12288
2.디렉토리에서 ls -al 했을때
a 란 디렉토리사이즈가 12288
1/a란 디렉토리에서 ls -al 했을때
./ 12288
../ 8192
2/a 란 디렉토리에서 ls -al 했을때
./ 12288
../ 4096
나오네요.. 의심되는거라곤 이거 밖에 없네요..
그런데 이 의미가 어떤건가요?? 딱두배차이가 나는데...
차이점이라곤 1이란건 인스톨할때 파티션을 잡은거고
2 란 디렉토리는 나중에 fdisk로 hdd를 통으로 하나의 파티션으로
잡은 차이밖에 없는데...
아마도 파일 시스템의 블럭사이즈 차이일듯 하군요..맞는지는 모르겠
아마도 파일 시스템의 블럭사이즈 차이일듯 하군요..
맞는지는 모르겠습니다. :oops:
RET ;My life :P
혹시 파티션타입의 차이때문이 아닐까요?똑같은 파일이 다른 크기를 갖게
혹시 파티션타입의 차이때문이 아닐까요?
똑같은 파일이 다른 크기를 갖게되는 경우는 파티션 타입이 다를경우 밖에 없을거라는
생각입니다.
../의 크기가 다른것도 그렇고요.
혹시 1/a가 속한 파티션은 xfs같은 것이고 2/a가 속한 파티션이 ext3인지 확인해보세요.
제가 확인해본 결과 ../의 크기가 4096인건 ext3인것같은데 ../의 크기가 8192는
무언지 잘 모르겠네요.
------------------------------
좋은 하루 되세요.
[quote="codebank"]혹시 파티션타입의 차이때문이 아닐까요?
에구.. mount 로 확인결과 파일시스템은 다같이 ext3네요
8192로 잡힌건 인스톨(rh7.3) 할때 ext3로 파일시스템을 생성한거고
4096으로 잡힌건 hdd추가할때 fdisk로 ext3로 잡은겁니다.
데이터의 유효성에는 문제가 없는듯한데 .. 왜 그럴까요?
^^;; 지금 fdisk문서랑 레드헷가서 찾고있는데..
아 머리아퍼..... 공부하세요...퍽.. ^^*
순수한(?) tar 파일이 아니라 gzip 으로 압축된 녀석이군요
순수한(?) tar 파일이 아니라 gzip 으로 압축된 녀석이군요
디렉토리명 길이가 같더라도, 이름 약간 틀린것으로
저 정도의 크기 차이는 충분히 날 수 있습니다.
순수한 tar 라면 크기 차이가 나지 않아야 맞겠지만,
gzip 으로 압축했기 때문에 날 수 있는 것이죠.
예상키로는,
두 파일의 gzip 압축을 풀었을때 크기 차이는 없을 것으로 예상됩니다.
아 정말 그러네요 /d/a /f/a 테스트해보니 /d
아 정말 그러네요
/d/a
/f/a
테스트해보니
/d 밑에서 tar cvf 1.tar a/
/f 밑에서 tar cvf 2.tar a/ 했더니 사이즈가 같네요
압축옵션을넣어서
/d 밑에서 tar cvzf 1.tar.gz a/
/f 밑에서 tar cvzf 2.tar.gz a/ 하니 사이즈가 틀려지고요
gzip 을 이용할때 사이즈가 틀려지는거 같네요..
근데 왜틀려질까요???
충분히 틀려질 수 있을것 같습니다.tar 로 압축을 하지 않고 묶어만
충분히 틀려질 수 있을것 같습니다.
tar 로 압축을 하지 않고 묶어만 놓으면, 두개의 바이너리 사이즈는 같지만 실제로 바이트 시쿼스는 다릅니다.
왜 다르느냐.. 카탈로그의 파일명이 달라지기 때문이겠죠...
압축을 할때 대부분의 알고리즘들이 연속되는 바이트들 사이의 패턴을 이용해서 압축하는 것이기 때문에 서로 다른 두개의 바이너리를 압축하게 되면 당연히 압축된 파일의 사이즈는 달라 질 수 밖에 없겠죠..
그럼..
스마트한 개발자
크기가 다른 이유는....디렉토리 엔트리의 파일 리스트 순서가 다르기
크기가 다른 이유는....
디렉토리 엔트리의 파일 리스트 순서가 다르기 때문입니다.
ls는 이를 정렬해서 보여주지만, tar z는 정렬안합니다.
댓글 달기