커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
*
HanIRC의 #coffeenix 방
[
장비 및 회선 후원
]
> Forum <
IT 일정
N
e
w
!
자동화 프로젝트
HOME
>
Unix/Linux 처음 시작하기
>
명령어 사용하기
도움말
검색 :
사이트
WHOIS
웹서버 종류
xargs와 tar로 파일 묶을 때 생각할 것
작성일 : 2005/03/16 23:42
글쓴이 : 좋은진호 (
http://coffeenix.net/
)
조회수 : 11363
[
이전화면
/
수정
] 비밀번호 :
제 목 : xargs와 tar로 파일 묶을 때 생각할 것
글쓴이 : 좋은진호(truefeel,
http://coffeenix.net/
)
글쓴날 : 2004.10
정리일 : 2005.3.15(화)
10000개가 넘는 파일 중 a~e로 시작하는 파일 2000여개만 tar로 묶을 때 어떻게 해야할까?
몇가지 방법을 얘기해보자.
1)
tar cvf /BAK/a_e.tar [a-e]*
2)
find . -name "[a-e]*" > list.txt
tar cvf /BAK/a_e.tar `cat list.txt`
3)
find . -name "[a-e]*" | xargs tar cvf /BAK/a_e.tar
1번째 방법은
a~e로 시작하는 이라는 아주 간단한 조건이기에 tar 명령만으로도 처리하려고 시도할 수
있을 것이다. 그러나 여기에 퍼미션이 644인 것이라는 조건이 더 붙는다면 find 명령과의
조합으로 처리하는게 훨씬 간단할 것이다.
물론 저 방법을 쓰더라도 인수(argument)가 너무 많다고 에러가 발생할 것이다.
2번째 방법은
- a~e로 시작하는 파일목록을 얻어 list.txt로 저장하고
- list.txt 목록을 통해 a_e.tar 파일명으로 묶는다.
그러나 cat list.txt 명령으로 넘겨 받은 인수(argument)가 2000여개면 너무 많아 1번 처럼
에러가 발생할 것이다. 그래서 보통 저 방법보다는 xargs 명령을 통해서 처리를 한다.
3번째 방법은
2번보다는 고단수(?)의 방법이다.
- a~e로 시작하는 파일 목록을 얻어
- xargs로 넘기면 xargs는 tar로 그 목록을 다시 넘겨
a_e.tar 파일명으로 묶는다.
이 방법은 앞의 1,2번의 문제였던 인수가 너무 많다는 에러가 발생하지 않고 정상적으로
묶어진 것처럼 보인다.
그러나
tar tvf a_e.tar | wc -l
명령으로 묶어진 파일이 몇 개인지 확인을 해보라.
원하는 결과가 나왔는가? 전혀 아닐 것이다. 2000여개가 아니고 몇 백개 또는 몇 십개의
파일만 묶여 있을 것이다.
이제 해결책을 알아보자.
해결책 1) xargs의 -n과 -s 옵션을 활용하는 방법
find . -name "[a-e]*" | xargs -n 20000 -s 80000 tar cvf /BAK/a_e.tar
-n 는 최대 인수(argument) 개수를 지정한다.
-s 는 인수의 최대 문자수를 byte로 지정한다. 기본 20Kbytes.
파일이 많거나 경로가 길어지면 20Kbytes 로는 턱없이 부족하다.
위처럼 -n 옵션과 -s 옵션으로 조합으로 파일을 묶을 수 있다.
20000과 80000이라는 숫자는 넉넉한 임의의 숫자이다.
해결책 2) tar의 -T 옵션을 사용하는 방법
find . -name "[a-e]*" > list.txt
tar cvf a_e.tar -T list.txt
목록을 얻어 list.txt로 저장한다. 그리고, tar의 -T옵션은 지정한 파일에서 목록을 얻어
파일을 묶는다.
tar의 -T 옵션을 해결하는 것이 xargs의 -n, -s에 이것저것 고민(?)해보고 적당한 숫자를
지정하는 것보다 사용이 편할 것이다.
커피닉스 카페 최근 글
[06/16]
[질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
[04/22]
Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
[10/20]
Cross Compiler 깔
[07/14]
SSL АО
[04/26]
Re: 도스화면 원격조종 여부
[04/25]
도스화면 원격조종 여부
[10/30]
Cshell에서 난수 설정
[10/23]
공항철도주식회사 SE 구인 件
[01/26]
Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
[01/25]
wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
[01/11]
특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
[08/01]
DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
[05/16]
(주)후이즈 시스템엔지니어 (경력자) 모집
[02/15]
[AWS] Cloudfront edge 확인하기
[01/20]
Mobile Service/eCommerce 기업에서 Server / Java / PHP 개발자 구인
N
e
w
! 최근에 등록한 페이지
KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
오픈캐스케이드 캐드 (OpenCASCADE CAD)
QCad for Windows --- GNU GPL (Free Software)
The Hello World Collection
IPMI를 활용한 리눅스 서버관리
DNS 설정 검사
nagiosgraph 설치 방법
Slony-I 설치 방법 (postgresql replication tool)
Qmail기반의 Anti spam 시스템 구축하기
clusterssh
[ 함께하는 사이트 ]
운영진 :
좋은진호(truefeel)
, 야수(yasu), 범냉이, sCag
2003년 8월 4일~