'리눅스'에 해당되는 글 2건

  1. 2013.01.29 시스템 백업과 복구
  2. 2012.11.19 리눅스 프로세스 상태 보기(ps명령)
Linux 2013. 1. 29. 11:32

우분투 쪽에는 사용자가 많아서 그런지 백업 방법도 많습니다. 리눅스 자체의 백업도 있고요. 그중에서도 리눅스에서 여러모로 유명한 백업방법인 tar 압축을 이용한 백업을 사용해보겠습니다.

Tar 명령어와 리눅스 백업 ?

시스템 백업도 요즘은 파일 백업과 이미지 백업이 있습니다. 이미지 백업은 파티션 또는 윈도우를 통째로 가상 이미지로 만들어 백업하는 것이고, 파일 백업은 말 그대로 파일로 백업하는 것입니다. 대부분 압축되죠. 왠지 모르게 이미지 백업이 안정성 있어 보이는데, tar는 파일백업이지만 시스템 통째로 백업하니 파일+이미지라고도 할 수 있을지도 모르겠습니다. 요즘은 우분투 프로그램 등으로 나온 게 많은데, 저는 기본 프로그램을 이용하여 백업하는 것을 선호합니다. 복구하기 위해 굳이 프로그램을 깔 일도 적은 경우가 많으니까요. 그런 면에서 tar는 적당합니다.

리눅스에서 tar 명령어는, Tape ARchive의 약자로서 이름에서 보듯이 예전에 자기 테이프(!)에 백업하기 위해 사용되었던 백업 명령어입니다. 무려 자기 테이프 시대에 쓰던 건데, 지금 써봐도 그다지 나쁘진 않습니다. 그래서 많이들 쓰죠. 안드로이드에서 CWM을 통해 백업하는 것도 파일들은 tar로 백업하는 것 같습니다.

tar 백업은 파일을 단위로 하여 백업합니다. 그래서인지 하드 파티션이 날아가서 다시 잡거나, 순서를 바꾸거나, 용량을 늘리거나, 스왑 파티션을 바꾸든가 해도 전혀 문제가 되지 않게, 원하는 파티션에 tar 백업해놓은 것을 복구해도 되더군요. 물론 grub 부트 로더를 재설치 해줘야 합니다. 우분투의 경우, 윈도우와 달리 시스템을 바꿔도 운영체제가 맛가지 않는 걸로 아는데, 여러모로 유용한 편이죠.

자세한 시간이 압축률은 잘 모르겠지만, 현 윈도우 기본 백업보다는 낫습니다. 윈도우는 아예 VHD 이미지를 떠서 백업하는 방식, 압축을 전혀 하지 않는 것이고, tar 명령어는 압축을 합니다. 50% 이상은 압축되더라고요. 명령어에 대한 자세한 정보는 터미널에 man tar를 입력해보세요.

tar 명령어로 우분투(리눅스) 백업

백업하는 건 아무것으로나 어쨌든 터미널 명령어를 입력할 수 있는 환경만 갖춰지면 됩니다. 우분투에서 터미널(Terminal)을 실행하시거나, TUI(콘솔. Ctrl + Alt + F1~F6)모드로 들어가던지, 우분투 리커버리에서 root로 들어가던지 하는 방법입니다. 라이브 시디로 부팅해서 백업하려면 chroot로 백업할 파티션을 설정해주세요. 참고로 우분투 기준입니다.

그 다음, 아래 명령어를 입력합니다. 바로 아래 - 부터는 설명이니 입력하지 마세요.

su -
- 루트 계정으로 변경하여 시스템 파일도 건드릴 수 있도록 합니다. 비밀번호를 입력하라는데 루트 계정을 만들지 않았다면, sudo passwd root 명령어를 입력하여 만들어줍니다.

tar cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/dev --exclude=/sys --exclude=/backup.tgz /
-아래에 설명합니다. 빨간색은 직접 입력해도 되는 부분입니다.

tar cvpzf는 tar를 c: 새로운 저장 파일을 생성, v : 진행 목록을 보여줌, p : 파일 권한 정보를 기억, z :gzip으로 압축(bzip으로도 가능), f : 파일이름설정 이라는 옵션을 주고 실행하는 것입니다. 개인이 조절 가능합니다.

backup.tgz에서 .tgz는 그대로 두고, 파일 이름이나 저장위치를 조절할 수 있습니다. /는 최상위, 그다음 backup.tgz가 있으니 즉 시스템 루트(/)에서 .tgz라는 확장자를 가진 backup이라는 tgz 파일이 생성됩니다. 경로에 공백이 있으면 안 되므로, 공백이 있다면 양옆을 ''로 묶어줍니다./를 잊지 마세요. backup을 다른 이름으로 바꿔줄 수도 있고, /TEST/test.tgz라고 입력하면 최상위 루트에서, TEST라는 폴더에 test.tgz 파일이 생성되겠지요. 뒤에 나오는 backup.tgz도 앞과 똑같이 적어주셔야 합니다. 이유는 아래에 설명합니다.

--exclude=/~~ 등이 여러 개 있는 것은, 해당 폴더를 제외한단 뜻입니다. 임의로 제외하고 싶으신 게 있으시다면, 명령어 뒤에 또 한 칸 띄고 --exclude=해당 파일 또는 폴더 경로 로 입력해주시면 되시겠습니다. /proc은 최상위에서 proc 폴더로, 가상 폴더라고 해서 제외하고, /lost+found도 오류 파일 정보 저장 위치라고 하여 제외, /media는 우분투에서 외장하드등의 기기가 마운트(?)되는 곳, 제외, /mnt도 마운트 하는 곳, /sys는 가상, /dev는 잘 모르겠지만 마운트 되는 곳 같기도 하고… 드라이버가 있다고도 하고… 다른 백업 예제를 보면 대부분 포함하네요. 마지막에 backup.tgz를 또 써주는 것은 백업 파일 자기 자신을 백업해야 백업한 파일이 또 백업 되지 않기 때문이죠.

맨 뒤에 /는, /에서부터 백업한단 뜻입니다. 말그대로 최상위, 전부 백업한다는 겁니다. 하지만 /이하의 폴더들을 백업할 때에는, 이 긴 명령어를 입력하기 전에 해당 백업할 폴더가 있는 경로로 들어가줘야 합니다. cd /경로 를 입력해서 해야 그 전의 폴더들이 백업되지 않습니다. (그리고, 백업할 때 폴더, 파일에 공백이 있다면 경로 양 옆을 ''로 묶습니다.)


exclude 순서가 조금 바뀌었지만, 그다지 상관은 없습니다.


빠른 속도로 백업 되고 있습니다. 중간에 백업하기 싫으신 게 있으시다면 중단하고 명령어에 exclude를 추가해주시면 됩니다.

다 끝나고 나서 에러가 났다고 뜨기도 하는데요, 그냥 무시해주시면 됩니다. 잘만 됩니다.


/에 이렇게 tgz 파일이 생겼습니다.

위의 저 파일은 권한상 건드릴 수 없습니다. 루트 권한으로 다뤄주시면 되는데요, ALT + F2 명령에서 gksu nautilus를 입력해주시거나, 터미널에서 su -나 sudo 등으로 루트권한을 얻고 nautilus를 입력하여 탐색기를 실행하시거나 하시면 됩니다. 그다음 복사 등을 하여서 백업해둬야겠죠.

tar 명령어로 우분투(리눅스) 복구

복구 환경은 생각보다 폭넓습니다. 소개한 부분에 특징을 몇 가지 설명해 놓았습니다.

이것도 명령어를 입력할 수 있는 환경이면 되지만, 아마도 X-window 상에서는 안될 것 같습니다. 따라서 TUI(콘솔. Ctrl + Alt + F1~F6)모드로 들어가던지, 우분투 리커버리에서 root로 들어가던지 하는 방법을 사용하셔야 할 것 같습니다.

su -
- 루트 계정으로 변경하여 시스템 파일도 건드릴 수 있도록 합니다. 비밀번호를 입력하라는데 루트 계정을 만들지 않았다면, sudo passwd root 명령어를 입력하여 만들어줍니다.

cd /
- 압축을 풀 폴더에 진입합니다. 보통 /으로 백업했으면 / 내부 파일이 전체 백업 되었으므로, 풀 때도 /에 들어가야 전체 파일이 풀어지겠죠.

tar xvpzf /backup.tgz
- 아래에 설명합니다. 빨간색은 직접입력

mkdir /proc
mkdir lost+found
mkdir /media
mkdir /mnt
mkdir /dev
mkdir /sys
- 마찬가지로, 아래에 설명합니다.

tar xvpzf는 tar를 x: tar로 압축한 파일을 품, v : 진행 목록을 보여줌, p : 파일 권한 정보를 기억, z :gzip으로 해제 (bzip으로 압축했다면 bzip으로), f : 파일이름이라는 옵션을 주고 실행하는 것입니다. 개인이 조절 가능합니다.

/backup.tgz 부분은 풀 백업 파일의 경로나 파일을 입력해 주는 것입니다. 백업한 파일이 그냥 시스템 최상위에 backup.tgz라고 있으면 위처럼 /backup.tgz라고 입력하시면 됩니다. tgz로 백업했으니 확장자는 .tgz, 외장하드 등에 있다면, 그 파일 경로를 입력해줘야겠죠. /외장하드 마운트 경로/파일 있는 폴더들/파일이름.tgz의 식으로요. 백업할 때와 같이 공백이 있다면, 얖옆에 ''로 묶어줍니다.

참고로, backup.tgz -C /로 하면 -C / 덕분에 경로를 입력하지 않아도 backup.tgz가 압축해제 된다고 하던데, 저는 안되었습니다.

mkdir ~는 백업할 때, --exclude=/폴더 로 제외한 폴더들이 있을 건데요, 이걸 다시 생성해줘야 정상적으로 작동합니다. 안하면 마운트가 안된다든지.. 하는 일이 일어나기도 합니다. mkdir 폴더를 생성, /proc은 말 그대로 /에 proc 폴더를 생성합니다.


입력합니다. 여기서는 X-window 터미널로 예를 들어봤습니다.


빠른 속도로 복구됩니다.

//
Linux 2012. 11. 19. 12:17

< ps [옵션] -현재 실행되고 있는 프로세스 목록 보여줌 >

-I : 자세한 형태의 정보를 출력

-u : 각프로세스의 사용자 이름과 시작시간을 보여준다.

-j : 작업 중심 형태로 출력한다.

-s : 시그널 중심 형태로 출력한다.

-v : 가상 메모리 중심 형태로 출력한다.

-m : 메모리 정보를 출력한다.

-a : 다른 사용자들의 프로세스도 보여준다.

-x : 로그인 상태에 있는 동안 완료되지 않은 프로세스들을 보여준다.

-S : child CPU 시간과 메모리 페이지 결함정보를 추가

-c : 커널 task_structure로 부터 명령이름을 보여준다.

-e : 환경을 보여준다.

-w : wide형태로 출력한다.

-h : 헤더를 출력하지 않는다

-r : 현재 실행중인 프로세스를 보여준다.

-n : USER와 WCHAIN을 위해 수치 출력을 지원

< 명령 출력 필드의 의미 >

USER : 프로세스 소유자의 계정

PID : 프로세스 구분 ID

RSS : 프로세스에 의해 사용되는 실제 메모리의 용량(Kbyte)

SZ : 프로세스의 자료와 스택의 크기

TIME : 현재까지 사용된 CPU의 시간(분, 초)

TTY : 프로세스의 제어 터미널

%CPU : 마지막 분 동안 프로세스가 사용한 CPU시간의 백분율

%MEM : 마지막 분 동안 프로세스가 사용한 메모리양의 백분율

START : 프로세스가 시작된 시간

STAT : 프로세스의 상태

-P : 수행가능/수행중

-T : 일시정지

-D : 대기상태

-S : 20초 미만의 짧은 휴식상태

-I : 20초 이상의 긴 휴식상태

-Z : 좀비 프로세스

COMNNAND : 명령어의 이름

< pstree [옵션] -프로세스 정보를 트리형태로 출력 >

-n : PID순으로 정렬

-p : 프로세스명과 함께 PID도 출력

< kill [옵션] 프로세스ID -프로세스 죽이기 >

-s : 특별히 보낼 시그날의 이름이나 번호 지정

-p : 시그날은 보내지 않고 그 프로세스의 이름만 보여준다.

-l : 시그날의 목록 출력

*강제종료시

kill -9 "PID"

*특정 데몬과 관련된 모든 프로세스를 종료하고 싶을때

killall "데몬이름"

< top [옵션] -프로세스의 CPU, MEMORY 사용량등 시스템의 전반적인 상황을 실시간으로 모니터링 >

-d 시간 : 화면 갱신 시간을 지정한다.

-q : 화면을 계속 갱신한다.

-c : 명령행 전체를 보여준다.

-i : idle 상태와 좀비 프로세스는 무시한다.

*top 실행중 명령어

k : 킬

r : nice 값 변경

l : top 맨 윗줄의 항목 on/off

m : 메모리 항목 on/off

t : 프로세스와 CPU 항목 on/off

c : command line 의 옵션 on/off

q : 프로그램 종료

'Linux' 카테고리의 다른 글

잘정리된 iptables 사용법  (0) 2013.01.28
Iptables 포트제한  (0) 2012.12.08
mpich2 를 이용한 클러스터링 셋업  (0) 2012.11.16
yum으로 tomcat 인스톨후 초기화 방법  (0) 2012.11.13
ubuntu kde 에 한글입력 올리기  (0) 2012.11.11
//