2012-03-02 2 views
3

Linux에서 디렉토리를 압축하려고합니다. tar.gz을 만들었습니다. 그 이유는 디렉토리에 * .o 파일과 일부 pdf 파일이 포함되어 있기 때문입니다.tar로 디렉토리를 압축하는 동안 큰 파일을 제외하는 방법

디렉토리를 압축 할 수있는 방법이 있습니까? 은 미리 정의 된 크기보다 큽니다. tar 명령에 --exclude 인수가 있지만 1MB보다 큰 파일을 거부하고 싶습니다. 이것은 파일의 이름이 아니라 제약입니다.

답변

-1

find ./myRep/ -type f -size -1024k | xargs를 타르 cfvz 한마디 myArchive.tar

는,이 식의 첫번째 부분의 크기가 1024K 이하 재귀 ./myRep/ 및 제 부분으로부터 타르/GZIP 압축 파일을 생성하는 파일리스트를 생성.

+5

이 반복적으로 타르를 호출 할 수 있습니다

는 당신이 첫 번째 아카이브를 추출 할뿐만 아니라 타르의 --ignore-zeros 또는 -i 옵션을 사용이 결과 파일의 압축을 풉니 다. '찾으십시오. -print0 | tar --null -T - ...'(tar 매뉴얼에서 : "--files-from '의 파일 이름으로 단일 대시를 제공하면 (즉, --files-from = - 또는 -T -) 파일 이름을 표준 입력에서 읽습니다. ") –

-1

find (-size 플래그와 함께)와 xargs를 조합하여 tar로 전달할 수 있습니다. 같은

뭔가 : 100,000 이상의 파일에 대한

find . -size -100k -print | xargs tar cvf archive.tar 

적은. 사람이 1 월 필립 Gehrcke의 응답을 바탕으로 다른 크기 옵션

2

위해 찾아보기 : 파일에 대한

find . -type f -size -1024k | tar -czf --null -T - -f archive.tar.gz 

1M 이하. OS X 및 Ubuntu Linux에서 테스트되었습니다.

+1

데비안 스퀴즈에서 나는 다음과 같은 에러를 보았습니다 : 'tar : 다중 아카이브 파일은 -M 옵션이 필요합니다 ' 그러나이 파일은 '찾는다. 타입 - 크기 -100k | tar -cz -f test.tgz -T -' – Fluxine

+0

@Fluxine 그 중 하나를 작동시키지 못했습니다. http://stackoverflow.com/q/5891866/63736을 보았고'find. -type f -size 1M -print0 | tar -vzcf backup.tar.gz --null -T -' –

+0

'... | tar c --null -T -'해결책은 임의로 긴 파일 목록에서 잘 작동하지만 사소한 단점이 있습니다. 전체 파일 목록을 메모리에 저장합니다. 작은 파일이 많으면 문제가 될 수 있습니다. –

0

메모리가 충분하면 (즉, 대부분의 경우 사실임) 파일 목록이 간편하게 메모리에 저장되면 위의 해결 방법이 가장 좋습니다 (위의 ...| tar c --null -T -). 그러나 xargs 에 메모리 제한이있는 경우 해당 위치를 갖지만 여러 타르 호출이 나쁜 영향을주지 않도록 적절히 사용해야합니다.

find . -type f -size -1024k | xargs tar c | gzip > archive.tar.gz 

이 (당신은 또한 cz를 사용와 gzip 아카이브을 연결로 | gzip을 생략 할 수 있습니다 결과 파일에 함께 gzip으로 연결된 타르 아카이브 파일, 결과는 여전히 유효 :

당신은 사용할 수 있습니다, 압축하려면 gzip을 사용하지만 gzip 대신 bzip2 또는 xz를 사용하면 약간의 압축을 잃거나 꽤 압축됩니다.

tar xizf archive.tar.gz 
관련 문제