Develop
2003.04.23 11:15
[linux] tar 명령어 뽀개기.. ㅋㅋ
조회 수 7815 댓글 0
------------------------------------------------------------
1.tar 소개
2.미리 알아두면 좋을 것들
1) 옵션주는 방법
2) 왜 -f와 -v옵션이 많이 쓰이는가?
3) 가장 많이 사용되는 작업
3.기본 명령어 활용예
1) 아카이브 풀기
2) 아카이브 만들기
3) 아카이브 내용보기
4) 퍼미션을 유지하며 아카이브 만들기
5) tar+gzip 압축하기
6) tar+bzip2 압축하기
7) gzip으로 압축된 tar 풀기
8) bzip2로 압축된 tar 풀기
9) 허가권(Permission) 유지하며 풀기
4.백업에 활용하기
1) 아카이브에 새 파일 추가하기
2) 아카이브에 파일 업데이트하기
3) 아카이브에 파일 삭제하기
4) 아카이브에서 특정 디렉토리 또는 파일만 풀기
5) 옛버전 파일 풀기
6) 아카이브에서 파일 비교하기
5.기타
1) 모든 하위 디렉토리에 특정 소스만 묶고 싶을 때는?
------------------------------------------------------------
# 1.tar 소개
주요기능은?
아카이브를 만들거나 푼다.
아카이브란?
아카이브는 여러 파일을 한 파일로 묶은 것을 말한다.tar는 아카이브를 압축하지 않는다.
단지 하나의 파일로 묶을 뿐이다.
아카이브의 압축은 gzip이나 bzip2등을 이용한다.
아카이브를 만드는 목적
파일의 백업이나 배포에 편리하게 이용된다.
확장자
아카이브의 확장자는 .tar 이다.
일반적으로 tar로 묶인 아카이브를 gzip으로 압축하여 확장자가 .tar.gz 압축 아카이브를 많이 이용한다.
유래
원래, tar 아카이브는 마그네틱 테이프에 파일을 저장하기 위해 만들어졌다.
그래서 tar는 tape archiver에서 유래한다.
# 2 미리 알아두면 좋을 것들
2.1 옵션주는 방법
긴 형식 옵션
tar --create --verbose --file=afiles.tar apple angst aspic
짭은 형식 옵션
tar -c -v -f afiles.tar apple angst aspic
또는 붙여서
tar -cvf afiles.tar apple angst aspic
tar 는 반드시 옵션이 필요 해서 옵션에 - 를 붙이지 않아도 된다.
tar cvf afiles.tar apple angst aspic
2.2 왜 -f와 -v옵션이 많이 쓰이는가?
-f --file=
-f 는 아카이브 파일의 이름을 지정해 주는 옵션이다.-f 가 없으면 아카이브의 이름이 없는 샘이다.
따라서, -f 로 아카이브의 이름을 꼭 명시해야 한다.
tar는 아카이브 이름이 없으면 디폴트 이름을 취한다.
원래 tar의 목적대로 (디폴트로 엑션) 테입드라이브로 아카이브를 저장하려 들지도 모른다.
요즘은, 컴퓨터에 마그네틱 테입 드라이브가 없으므로 에러가 발생할 것이다.
-v --verbose
-v 옵션이 있으면 아카이브에 추가되거나 풀리고 있는 파일의 이름을 화면에 보여준다.
진행사항을 알 수 있기 때문에 사용하는게 좋다.
"ls -l" 과 같은 형식으로 파일을 보려면 v를 두번 써준다.
tar -cvvf afiles.tar 파일들(디렉토리들)
2.3 가장 많이 사용되는 작업
--create -c 새로운 아카이브를 생성한다.
--list -t 아카이브의 내용(묶인 파일이름)을 보여준다.
--extract -x 아카이브에 묶인 파일이나 디렉토리를 풀어준다.
# 3 명령어 활용예
3.1 아카이브 풀기
tar -xvf afiles.tar
afiles.tar 라는 아카이브 파일에 묶인 파일과 디렉토리를 현재 디렉토리에 풀어준다.
3.2 아카이브 만들기
tar -cvf afiles.tar 묶을파일과디렉토리들
afiles.tar 라는 이름으로 파일과 디렉토리를 묶어준다.
3.3 아카이브 내용보기
tar -tvf afiles.tar 묶을파일과디렉토리들
afiles.tar 라는 이름으로 묶인 파일과 디렉토리를 보여 준다.
3.4 퍼미션을 유지하며 아카이브 만들기
tar -cvfp archive.tar 묶을파일과디렉토리들
afiles.tar 라는 이름으로 퍼미션을 유지하며 파일과 디렉토리를 묶어준다.
3.5 tar+gzip 압축하기
tar -czvf afiles.tar.gz 묶을파일과디렉토리들
afiles.tar.gz 라는 이름으로 파일과 디렉토리를 묶어준다.
tar -czvfp afiles.tar.gz 묶을파일과디렉토리들
afiles.tar.gz 라는 이름으로 퍼미션을 유지하며 파일과 디렉토리를 묶어준다.
3.6 tar+bzip2 압축하기
tar -cjvf afiles.tar.bz 묶을파일과디렉토리들
afiles.tar.bz 라는 이름으로 파일과 디렉토리를 묶어준다.
tar -cvjfp afiles.tar.gz 묶을파일과디렉토리들
afiles.tar.gz 라는 이름으로 퍼미션을 유지하며 파일과 디렉토리를 묶어준다.
3.7 gzip으로 압축된 tar 풀기
tar -xvzf afiles.tar.gz
afiles.tar.gz 라는 tar 로 묶인뒤 gzip 으로 압축된 파일을 먼저 압축을 푼뒤에 묶인 파일까지 풀어준다.
3.8 bzip2로 압축된 tar 풀기
tar -xvjf afiles.tar.bz
afiles.tar.bz 라는 tar 로 묶인뒤 bzip2로 압축된 파일을 먼저 압축을 푼뒤에 묶인 파일까지 풀어준다.
3.9 허가권(Permission) 유지하며 풀기
tar -xpf afiles.tar
파일을 묶을 당시의 각 파일의 허가권을 유지하며 풀어준다.
# 4 백업에 활용하기
4.1 아카이브에 새 파일 추가하기
tar --append --file=collection.tar rock
또는
tar -rvf collection.tar rock
collection.tar 라는 기존 아카이브 파일에 rock라는 파일을 추가한다. 옵션은 --append (-r) 이다.
똑같은 이름의 파일이 아카이브에 추가되면 기존의 오래된 파일은 지워지지 않고 아카이브에 남아 있는다.
따라서 같은 이름의 파일을 여러번 추가하면 (append) 추가된 시간별로 여러 버전의 파일이 존재한다.
그러나, 아카이브를 풀때는 가장 최신 파일이 풀린다.
4.2 아카이브에 파일 업데이트하기
tar -uvf collection.tar blues folk rock classical
collection.tar 라는 기존 아카이브에 blues folk rock classical등 4 개의 파일을 업데이트 한다.
업데이트는 날자와 시간을 기준으로 실행한다.
아카이브에 있는 파일과 업데이트할 파일이 수정된 날자가 같으면 아카이브에 추가하지 않는다.
만약 아카이브에 있는 파일보다 최근에 수정이 되었으면 아카아브에 추가한다.기존의 오래된 파일은 지워지지 않고 남아 있는다.
따라서, 업데이트를 여러번 하면, 같은 이름의 파일이 수정된 시간별로 여러가지 버전이 존재할 수 있다.
그러나, 아카이브를 풀때는 가장 최신 파일이 풀린다.
아카이브를 풀때 옵션은 --update(-r)이다.
4.3 아카이브에 파일 삭제하기
tar --delete --file=collection.tar blues
collection.tar 라는 기존 아카이브에서 blues라는 파일을 삭제한다.
주의할 것은 모든 blues파일을 삭제한다는 것이다.
모든 디렉토리내의 blues파일과 여러 버전의 blues가 모두 삭제된다.
다른 옵션과 달리 삭제 옵션인 --delete는 짧은 형식의 옵션이 없다.
3.4 아카이브에서 특정 디렉토리 또는 파일만 풀기
명시된 파일 풀기: collection.tar 라는 아카이브에서 blues라는 파일만 현재 디렉토리에 푼다.
tar --extract --file=collection.tar blues
디렉토리까지 명시: music.tar 에서 practice/folk와 practice/jazz파일만 푼다.
tar -xvf music.tar practice/folk practice/jazz
*** 실제 활용 예 ***
tar xzvfp /backup/20050107/20050107.tar.gz /home/ home/yc1500
tar [옵션] [아카이브파일명] [압축을풀어놓을 대상디렉터리] [압축파일내의 특정파일(폴더)]
p 옵션: 허가권 유지 옵션
4.5 옛버전 파일 풀기
tar --extract --file archive.tar --occurrence=2 myfile
archive.tar 라는 아카이브에서 2번째 버전의 myfile을 푼다.
tar --extract --file archive.tar --occurrence
archive.tar 라는 아카이브에서 첫번째 버전의 모든 파일을 푼다.
4.6 아카이브 파일과 실제 파일 비교하기
tar -d -f archive.tar *.c
archive.tar라는 아카이브에 모든 c파일들과 현재 디렉토리의 c파일을 비교한다.수정 날자와 내용을 비교하고 내용이나 날자가 다르면 화면에 보여준다.
# 5. 기타
5.1 모든 하위 디렉토리의 특정 소스만 묶고 싶을 때는?
쉘 컴멘드와 조합하여 특정 소스를 찾아서 아카이브에 추가 할 수 있다.
먼저 아카이브를 하나 만든다.
tar -cvf test.tar prog1.c
for 문과 find 명령을 이용해서 하위 디렉토리의 묶고 싶은 파일을 찾고, tar의 -r 옵션으로 test.tar에 하나씩 추가한다.
for i in $(find .-name '*.c'); do tar -rvf test.tar $i; done
find 의 다양한 검색능력을 100%활용할 수 있다.
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
421 | Develop |
[c] 근의 공식으로 2차방정식 풀기..
![]() |
hooni | 2003.04.23 | 7825 |
420 | Develop |
[c] 학생명단 관리 프로그램 소스 ㅋㅋ
1 ![]() |
hooni | 2003.04.23 | 7820 |
» | Develop | [linux] tar 명령어 뽀개기.. ㅋㅋ | hooni | 2003.04.23 | 7815 |
418 | Develop | [asp] 문자열 관련 함수 요약 | hooni | 2013.04.23 | 7815 |
417 | Develop | [c] 단기과정[01/08] (다차원 + 배열)포인터, void 포인터 | hooni | 2003.04.23 | 7804 |
416 | Develop | [js] 키보드 아스키 코드 확인하는 간단한 소스 | hooni | 2003.04.23 | 7797 |
415 | Develop |
[c#] HTML 이벤트 샘플 소스..
![]() |
hooni | 2013.04.23 | 7788 |
414 | Develop |
[api] 인스타그램 API Access_Token 발급 방법 (Instagram API)
3 ![]() |
hooni | 2018.04.05 | 7761 |
413 | Develop |
[c#]뉴 툴바 개인적으로 만든거.. (new)
![]() |
hooni | 2013.04.23 | 7724 |
412 | Develop |
[doc] mfc 매뉴얼 다운 받아서 완성하기.. ㅋㄷ
![]() |
hooni | 2013.04.23 | 7716 |
411 | Develop | [c] 코드 최적화에 대해.. | hooni | 2013.04.23 | 7715 |
410 | Develop |
[ios] How To Use UIScrollView to Scroll and Zoom Content (Using Swift)
![]() |
hooni | 2016.03.23 | 7715 |