http://linux-sarang.net/board/?p=read&table=tip&no=5711&page=&o[at]=s&o[sc]=r&o[no]=5711

 

% 알림 시작 %
split의 카운트 방법이 바뀐 것 같습니다.
예전에는 카운트 횟수에 제한이 없었는데..
지금 살펴보니깐 zz까지 되는군요. --;
덕분에 열심히 짰었던 스크립트가 쓸모 없게 되었군요.
뭐 어차피 그렇게 필요한 스크립트는 아니지만 --;;
% 알림 끝 %



## tar.gz -> tar.bz2 형식으로 하려면 (확장자만 바꾸는 것 아님 --;;)

우선 하드 공간이 넉넉하면

$ gzip -d some.tar.gz
$ # tar 파일이름을 확인한 후
$ bzip2 some.tar

하드 공간이 부족하면

$ gzip -dc some.tar.gz | bzip2 -f - > some.tar.bz2

저는 이전에 tar.bz2 를 tar.gz 으로 바꾸어야 하는 상황이 있어서 반대로 이용했습니다. bzip2가 없는 시스템에서 풀어야 했거든요. --;;


## tar + gzip(or bzip2) + split 으로 다중 압축 아카이브 만들기 (거창하다.. --;;)

split을 이용한 팁은 이곳에서 찾았습니다.

다시 한 번 간략하게 쓰면

tar + gzip 으로 하고.. 50메가씩 나누고 싶다면...

$ tar -czvf - /lsn | split -b 50m - lsn.tar.gz_

이렇게 하시면

lsn.tar.gz_aa
lsn.tar.gz_ab
lsn.tar.gz_ac
.
.

이런 순으로 파일을 생성시킵니다.

첫번째 파일은 크기가 지나치게 작지 않다면

file 명령어로 확인해보면 gzip된 파일이라고 알려줍니다.
나머젼 data로 나오고요.

그래서 lsn.tar.gz 이라는 텍스트 파일을 만들어서 약간의 정보를 적어두시면 더 도움이 되리라 생각합니다.(처음 이 파일을 접한 사람을 아리송하겠죠?)


풀려면

$ cat lsn.tar.gz_* | (cd 풀고싶은곳; tar -xzvf - )

문제는 lsn.tar.gz_* 은 lsn.tar.gz_aa lsn.tar.gz_ab ... 이런식으로 확장이 되어 cat에게 넘겨주는데요. 이 순서가 반드시 본래 파일의 byte order로 되어 있어야 합니다. split에 생성된 파일은 알파벳 순으로 정렬하면 그 순서가 맞습니다.


마지막으로 제가 만든 쉘스크립트 중 가장 긴 길이를 자랑하는(정말 읽기 짜증나는) mtar.sh 입니다.

$ mtar.sh -czvf lsn.mtgz /lsn -b 50m

하시면

자동으로

lsn.mtgz_aa
lsn.mtgz_ab ...

이렇게 생성을 시켜주고

lsn.mtgz 이라는 이름으로
약간의 정보와 함께 자동으로 파일을 풀 수 있도록해주는 쉘랩퍼(스크립트)를 만들어줍니다.

압축을 풀 때는

$ chmod +x lsn.mtgz
$ cd 풀고싶은곳
$ /lsn.mtgz가있는곳/lsn.mtgz

이렇게 하시면

빠진 파일이 없는지 체크하고, 이상이 없으면 파일을 풉니다.

아직 테스트 중입니다. --;;
만일 쓰시려면 각오하시고 쓰십시오. 적어도 하드 포맷은 안될 것입니다. --;;
테스트 결과 ksh에서도 동작하는 듯 보입니다. --;;

느끼는 건데 쉘스크립트에서는 bash만한 것도 없네요.

mtar.sh


텍스트로 보기
mtar.sh


p.s) chmod +x mtar.sh # 필수 --+

 

Posted by 큰바우
: