같은사이즈파일들이 있는 두개의 폴더를 tar압축시 사이즈가 틀립니다.

jw0717의 이미지

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

이렇게 사이즈가 약간차이나네요

압축하는동안 에러난것도 없고 그런데 어떤이유일까요??

Stand Alone Complex의 이미지

디렉토리 이름에 의해 영향을 받았을수도 있습니다.

한번 이렇게 실험(?) 해보세요.
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

jw0717의 이미지

질문이 미흡했군요..

디렉토리이름또한 같습니다.

/d/a
/f/a 입니다.

/d 밑에서 tar cvzf a.tar.gz a/
/f 밑에서 tar cvzf a.tar.gz a/했습니다.

그런데 사이즈가 틀리네요..음...

Stand Alone Complex wrote:
디렉토리 이름에 의해 영향을 받았을수도 있습니다.

한번 이렇게 실험(?) 해보세요.
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/

특별한 영향을 미치는것이 없는한 해보시면 크기가 같게 나올거라고 예상됩니다.

Prentice의 이미지

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 가 틀려서 이거 사이즈는 좀 틀리군요..

혹 이것때문인지... 상위 디렉토리도 같게해서 함 테스트 해봐야겠습니다.

검은해 wrote:
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

결과가 같은가요, 다른가요? 말씀해주신 상황에 대해 확실히 모르겠지만, 숨김파일이 있는 경우 압축파일의 크기가 달라질 수 있는 것을 확인했습니다.

Prentice의 이미지

그럼 diff -qr /d/a /f/a 하시면 뭐라고 나오나요?

jw0717의 이미지

검은해 wrote:
그럼 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를 통으로 하나의 파티션으로
잡은 차이밖에 없는데...

Stand Alone Complex의 이미지

아마도 파일 시스템의 블럭사이즈 차이일듯 하군요..

맞는지는 모르겠습니다. :oops:

RET ;My life :P

codebank의 이미지

혹시 파티션타입의 차이때문이 아닐까요?
똑같은 파일이 다른 크기를 갖게되는 경우는 파티션 타입이 다를경우 밖에 없을거라는
생각입니다.
../의 크기가 다른것도 그렇고요.
혹시 1/a가 속한 파티션은 xfs같은 것이고 2/a가 속한 파티션이 ext3인지 확인해보세요.
제가 확인해본 결과 ../의 크기가 4096인건 ext3인것같은데 ../의 크기가 8192는
무언지 잘 모르겠네요.

------------------------------
좋은 하루 되세요.

jw0717의 이미지

codebank wrote:
혹시 파티션타입의 차이때문이 아닐까요?
똑같은 파일이 다른 크기를 갖게되는 경우는 파티션 타입이 다를경우 밖에 없을거라는
생각입니다.
../의 크기가 다른것도 그렇고요.
혹시 1/a가 속한 파티션은 xfs같은 것이고 2/a가 속한 파티션이 ext3인지 확인해보세요.
제가 확인해본 결과 ../의 크기가 4096인건 ext3인것같은데 ../의 크기가 8192는
무언지 잘 모르겠네요.

에구.. mount 로 확인결과 파일시스템은 다같이 ext3네요

8192로 잡힌건 인스톨(rh7.3) 할때 ext3로 파일시스템을 생성한거고

4096으로 잡힌건 hdd추가할때 fdisk로 ext3로 잡은겁니다.

데이터의 유효성에는 문제가 없는듯한데 .. 왜 그럴까요?

^^;; 지금 fdisk문서랑 레드헷가서 찾고있는데..

아 머리아퍼..... 공부하세요...퍽.. ^^*

kslee80의 이미지

순수한(?) tar 파일이 아니라 gzip 으로 압축된 녀석이군요

디렉토리명 길이가 같더라도, 이름 약간 틀린것으로
저 정도의 크기 차이는 충분히 날 수 있습니다.

순수한 tar 라면 크기 차이가 나지 않아야 맞겠지만,
gzip 으로 압축했기 때문에 날 수 있는 것이죠.

예상키로는,
두 파일의 gzip 압축을 풀었을때 크기 차이는 없을 것으로 예상됩니다.

jw0717의 이미지

아 정말 그러네요
/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 을 이용할때 사이즈가 틀려지는거 같네요..

근데 왜틀려질까요???

kslee80 wrote:
순수한(?) tar 파일이 아니라 gzip 으로 압축된 녀석이군요

디렉토리명 길이가 같더라도, 이름 약간 틀린것으로
저 정도의 크기 차이는 충분히 날 수 있습니다.

순수한 tar 라면 크기 차이가 나지 않아야 맞겠지만,
gzip 으로 압축했기 때문에 날 수 있는 것이죠.

예상키로는,
두 파일의 gzip 압축을 풀었을때 크기 차이는 없을 것으로 예상됩니다.

dmlim의 이미지

충분히 틀려질 수 있을것 같습니다.
tar 로 압축을 하지 않고 묶어만 놓으면, 두개의 바이너리 사이즈는 같지만 실제로 바이트 시쿼스는 다릅니다.
왜 다르느냐.. 카탈로그의 파일명이 달라지기 때문이겠죠...

압축을 할때 대부분의 알고리즘들이 연속되는 바이트들 사이의 패턴을 이용해서 압축하는 것이기 때문에 서로 다른 두개의 바이너리를 압축하게 되면 당연히 압축된 파일의 사이즈는 달라 질 수 밖에 없겠죠..

그럼..

스마트한 개발자

익명 사용자의 이미지

크기가 다른 이유는....
디렉토리 엔트리의 파일 리스트 순서가 다르기 때문입니다.
ls는 이를 정렬해서 보여주지만, tar z는 정렬안합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.