특정 디렉토리 하위에 대규모, 대용량의 파일을 다른 디스크로 옮기고 싶은 경우 cp 명령을 사용하면
매우 많은 시간이 소요된다. 

아래 명령을 통해 많은 시간을 단축할 수 있다. 


# cd <srcdir>
# tar cf - | ( cd <dstdir> ; tar xf - )

예제 : 


# cd /data/images
# tar cf - | ( cd /mnt/usb/images ; tar xf - )

스크립트 방식으로 작성할 경우 아래와 같은 명령 구문으로 위의 operation 내용을 단순화 
시킬 수 있다. 

# tar -C<srcdir> -cf - | tar -C <dstdir> -xf -

주의 사항 : 시스템 부하가 cp 보다 많이 걸린다. 중요한 서비스 가용 중에는 가급적 삼가하길..


출처 - http://blog.syszone.co.kr/3190


부분으로 나우어서 설명 드리면


tar
물어보고 계신 tar묶음 명령 입니다.
묶음을 만들기 위해서 실행하고 있습니다.

c
묶음파일을 만듭니다.

f
별도 지정하지 않으면 묶은 결과를 stdout즉 화면으로 출력 합니다.
그것을 별도 지정하는곳으로 출력 합니다.
여기서는 "-" 다시 stdout 으로 명시 하고 있습니다.

.
현제 디렉토리를 말하고 있습니다.

|
파이프 라인인데요.
왼쪽의 결과(stdout)를 오른쪽의 stdin 으로 넘깁니다.

cd /backup/aaa/daily.O/
이건뭐 일반적인 현제 디렉토리 변경이구요.
이렇게 하는 이유는 tar가 묶음을 풀때 타겟 디렉토리를 지정 할 수가 없고
현제 디렉토리에 풀게 되어 있습니다.
그래서 현제 디렉토리를 타겟으로 옮기는 거죠.

tar
다시 tar이군요. 이번에는 풀기 위해서 사용 하고 있습니다.

x
묶음을 풉니다.

v
좀 수다 스럽게 합니다.
진행내용을 장황하게 화면에 보여 줍니다.

f
이번에는 x와 조합이 되어서 풀려고 하는 묶음을 지정 합니다.
여기서도 "-" 이군요. 이번에는 x 와 조합되어서 stdin 이 됩니다.
stdin 은 아까 "|" 에 의해서 이전 tar의 stdout에서 오는거죠.
다시 말해는 이전 tar에서 묶은 내용 입니다.

()
명령의 묶음을 지정 합니다.
이겅의 정확한 의미는 저도 자세히는 모르겠습니다.
메뉴얼 페이지를 봐야 될것같은데... 귀차니즘이...
앞부분은 없어도 상관이 없는데 뒷부분은 없으면
tar에서 파일을 넘겨 받지 못할것같습니다.
역시 귀차니즘으로 테스트 안해봤습니다.


다시 설명을 드리면
tar로 현제디렉토리와 그 이하를
"/backup/aaa/daily.0/" 에 복사하는 내용 입니다.
cp 명령을 사용해도 되지만 원본의 파일 상태(퍼미션,날짜 등등)를
변경없이 그대로 복사할 필요가 있을때는 주로 tar을 사용 합니다.
cp도 가능은 하지만.......
둘의 차이점은 있는데.. 지금 정확히 모르겠습니다.
(자꾸 모르는것만 물어봐.... ㅠ)

암튼 도움이 되셨으면 합니다.


출처 - http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10302&docId=70984095&qb=dGFyIGNmIC0gLg==&enc=utf8&section=kin&rank=1&search_sort=0&spq=1&pid=Rt8kgF5Y7t0ssaFIM2Gssc--293400&sid=UB8bTjz7HlAAAFn6Fs8





'System > Linux' 카테고리의 다른 글

linux - 소스(source) rpm 설치  (0) 2012.08.23
linux - multitail  (0) 2012.08.23
linux - bash  (0) 2012.07.24
linux - 환경변수  (0) 2012.07.17
linux - 백그라운드 실행 & 과 nohup의 차이  (0) 2012.07.17
Posted by linuxism
,