[완료]쉘에서 tar로 묶어주는 것인데, 파일이 4메가정도에서 다시 0으로 초기화가 되어버립니다.
글쓴이: sia79 / 작성시간: 월, 2008/10/20 - 1:55오후
제가 사용한 명령은 간단하게 ls -1 | xargs tar -cvf /tmp/test/hahaha.tar 입니다.
현재 디렉토리에 매우 많은 파일들이 있고, 파일 이름이 날짜시분초로 되어있어서 시간순서대로 묶어주려고 합니다.
그냥 ls -1 치면 가장 낡은 파일이 처음이고 최신 파일이 마지막으로 오는 순서대로 정렬되어 보여주므로...
그대로 tar로 묶어주면 되겠다 싶어 저렇게 쓴 것인데요.
/tmp/test/hahaha.tar 이 파일이 약 4.5메가 써지면 그 다음 바로 0바이트부터 되는데 이유를 모르겠습니다.
혹시 tar에 묶어줄 파일 수의 제한이 있는지요? 물론 man 을 살펴보았는데, 찾질 못했습니다.
사용환경은 fedora 5 입니다. 디렉토리에는 1kb내외의 파일이 약 15만개 있습니다.
추가합니다:
find . | xargs tar -cvf /tmp/test/hahaha.tar 로 하면 모든 파일이 정상적으로 전부 묶여지는군요;;; 단지 정렬이 안될 뿐.
정렬을 시키려고 find . | awk -F/ '{print $2}' | sort | xargs tar -cvf /tmp/test/hahaha.tar 을 하면 또 위와 같이,
4.5메가정도에서 0바이트 되면서 다시 새로 써집니다. 왜 그런가요? ㅜ.ㅜ
Forums:
환경이 어떻게 되나요?
제가 테스트해보니 문제가 없군요.
혹시, 환경이나 버전 문제가 아닐까요?
저는 레드햇 리눅스를 사용합니다. 커널 버전 2.4.x이구요.
1) tar를 새로한번 받아서 테스트해보시는게 어떨까요?
2) 아니면, 다른 디렉토리에서 더미 파일들을 가지고서 테스트를 해보시지요..
3) 혹시, /tmp 디렉토리가 파일시스템 용량을 체크해 보세요.. 몇메가 안남은건 아닐까요?
A few Good Man
xargs 는 넘어오는
xargs 는 넘어오는 파일을 1000 개정도로 나눠서 명령을 "재실행"하는 프로그램입니다.
그러니까 hahaha.tar 라는 파일이 처음 1000개로 묶이고 그거 완료되면 또 같은 파일명으로 다음 1000개를 묶고 하는거죠..
그럼 rm -f
그럼
rm -f hahaha.tar
touch hahaha.tar
ls -1 | xargs tar rvf hahaha.tar
하면 되겠군요
OTL
네, 잘 되는군요.
네, 잘 되는군요. 고맙습니다.
xargs에 대해 새로운
xargs에 대해 새로운 사실을 알게되었습니다. 정말 감사합니다.
man 페이지에 않나와있다니...
제가 살펴보니
오~~ 새로운 사실을 깨달았네요..
그래서.. gnu xargs를 다운받아 살펴봤는데..(내..가끔 이렇게 쓸데없이(?) 필 받을 때 있습니다)
확인해 보니..시스템에서 환경정보 등을 가져와서 arg_max를 셋팅하는데..
제가 xargs를 바탕으로 테스트 프로그램을 짜서 보니, 16854가 나오는군요..
그렇다면,,, 기본적으로 리눅스에 깔려 있는 xargs와 새로이 소스를 받아 컴파일한 xargs의 arg_max 차이가 존재하지 않을까요?
(음..혹, 나중에 시간나면 제가 직접 시험을 해보지요..
혹시, 먼저 필받으시는 분 계시면 올려주시던가요..^^)
A few Good Man
댓글 달기