Linux 2014. 12. 30. 11:13
for i in {1..5}
do
   echo "$i"
done


//
Linux 2014. 10. 25. 11:18

Sep 26, 2013 3:22:14 PM Error: Starting VM 'Ubuntu Precise Pangolin 12.04 (64-bit)' - The bootloader for this VM returned an error -- did the VM installation succeed?  INVALID_SOURCE

Unable to access a required file in the specified repository: http://archive.ubunut.com/ubuntu/dists/precise/main/installer-amd64/current/images/netboot/xen/vmlinuz.


이런식으로 나오는걸

xe vm-list 로 설치하고자 하는 vm의 uuid를 얻어 온 뒤 boot 옵션들은 수정하여 재시작 한다


xe vm-param-set uuid=13005686-4547-599f-9e59-148982868d68 HVM-boot-policy="BIOS order"

xe vm-param-set uuid=13005686-4547-599f-9e59-148982868d68 HVM-boot-params:order=cd

'Linux' 카테고리의 다른 글

쉘스크립트 숫자반복  (0) 2014.12.30
VI에서 찾아바꾸기 등  (0) 2014.09.22
Mysql 컴파일 설치 절차(리눅스에서)  (0) 2014.06.16
sed awk 사용법  (0) 2014.06.01
Linux process explorer  (0) 2014.05.07
//
Linux 2014. 9. 22. 14:45

문자열 찾기(Find)


* 현재 문서를 편집중이라면, 키보드의 Esc 키를 눌러 편집모드에서 빠져나옵니다.

* 키보드의 슬래쉬(/)키를 누르고, 찾을 문자열을 입력합니다. 만약 foo 라는 문자열을 찾는다면

/foo

이렇게 하면 됩니다.

그런데 /키는, 위에서 아래로 찾는 것입니다.

아래에서 위쪽 방향으로 찾으려면 물음표(?)키를 사용합니다. 현재 커서 위치의 위쪽에 있는 foo 라는 문자열을 찾으려면

?foo

라고 하면 됩니다.


다음 문자열(문자) 계속 찾기


다음 문자열 찾기는 소문자 n 입니다. 만약 foo 가 여러 개 있다면, 아래쪽 foo들을 계속 찾게 하는 것입니다.

역방향으로 계속 찾으려면 대문자 N 을 누릅니다.

※ 엔터키를 눌러서 일반모드로 나온 후 n을 눌러야 합니다. 찾을 문자열 뒤에 그냥 n을 붙이면 안 됩니다.
후추나님의 코멘트를 보고 나서야, 여기에 대한 설명이 부족했다는 것을 알았습니다.^^;


대소문자 구분 없이 찾기


Vim은 대소문자를 구분하여 찾기에 불편합니다. Vim 설정 파일인 .vimrc또는 _vimrc 파일에,
set ignorecase
이런 줄을 삽입하면 대소문자 구분 없이 찾기를 할 수 있습니다. (▶▶ [.vimrc] Vim / Gvim 설정 파일 예제 - 리눅스 텍스트 에디터 참고)





문자열 바꾸기(치환)


* 현재 문서를 편집중이라면, 키보드의 Esc 키를 눌러 편집모드에서 빠져나옵니다.

* 콜론(:)을 누르고 %s/foo/bar 라고 하면 모든 foo라는 문자열이 bar로 한꺼번에 치환됩니다.

다음과 같이 c 라는 옵션을 붙이면

:%s/foo/bar/c

바꿀 때마다 바꾸어도 좋은지 물어보기에 더 안전합니다. y를 누르면 바꾸고, n을 누르면 다음으로 건너뛰고, a를 누르면 모두 바꿉니다.


:%s/\<foo\>/bar


이렇게 하면 정확하게 foo에 일치될 때만 바꿉니다. 즉 foo는 바꾸지만, foo 앞뒤로 다른 문자열이 붙어 있는 경우, 예를 들어
fooZZZ
ZZZfoo
ZZZfooZZZ
이런 문자열 속의 foo 는 바꾸지 않습니다.



대소문자 구분없이 바꾸려면

:%s/foo/bar/i

이렇게 i 옵션을 붙입니다. 이것은 ".vimrc" 파일을 고치지 않아도 작동합니다.




전역 치환


이 경우
foofoofoofoofoofoofoofoo

이렇게
barfoofoofoofoofoofoofoo

문장의 첫번째 foo만 bar로 치환됩니다. 문장의 모든 foo를 bar로 치환하려면

:%s/foo/bar/g

이렇게 g 옵션을 사용합니다.


:%s/foo/bar/gi

이렇게 여러 옵션을 혼용할 수도 있습니다.

//
Linux 2014. 6. 16. 15:35

1)  사이트 방문하여 소스 다운로드 하기

- 각 OS 버전에 맞게 설치파일을 다운로드를 받을 수 있다.

 

http://dev.mysql.com/downloads/mysql/

(주의) 컴파일용으로 다운받기 위해서는 Platform을 "Source Code"를 선택하고 Compressed TAR Archive 를 다운받는다.)

 

2) wget으로 소스 다운로드 하기

# wget http://downloads.mysql.com/archives/mysql-5.0/mysql-5.0.85.tar.gz

 

[MySQL 리눅스에 간단 설치하기]

 

1) usr/local/src          <-- 여기에 다운로드

2) /usr/local/src 에 압축품 (# tar zxvf mysql-5.0.85.tar.gz )

3) mysql-5.0.85 폴더 생성됨 ( /usr/local/mysql-5.0.85 )

4) ./configure --prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--with-charset=euckr \
--with-innodb \
--with-mysqld-user=mysql \
--without-debug \
--enable-large-files \
--with-unix-socket-path=/var/lib/mysql/mysql.sock \
--with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static \
--without-debug \
--without-docs

5) make

6) make install

또는 5) 6) make && make install 같음.

이것으로 설치는 완료 됨.

//
Linux 2014. 6. 1. 16:28

-n 파일 안에서의 패턴이 발견된 라인 및 라인 번호
-v 패턴이 발견되지 않은 라인
-i 대소구분 무시(ignore)
-l 패턴이 들어있는 파일 이름만
-c 패턴이 들어있는 라인 번호만

 

#### 줄 관련 명령어와 기능 
d  텍스트 줄 삭제 명령 
a\   텍스트 줄 다음에 첨가 명령
i\    텍스트 줄 앞에 첨가 명령
c\   텍스트 줄 변경 명령 
n      다음 텍스트 줄을 읽는 명령
g      전파일 부분을 치환하는 명령
=      현재 줄 번호를 출력
[/패턴/]=   대응되는 줄의 패턴과 일치하는 각 줄의 번호를 표준 출력
p     패턴 일치되는 줄을 표준 출력
s/패턴/대체패턴/      플래그 패턴을 대체패턴으로 바꿈.  플래그는 g, p, wfile 
y/문자열1/문자열2/     문자열1과 문자열2를 서로 바꿈

 

^      : ^패턴            : 패턴으로 시작하는 모든 라인 찾기
$      : 패턴$           : 패턴으로 끝나는 모든 라인 찾기
.       : d...              : d로 시작하는 4자리 character 찾기
*      : [a-d]*          : a, b, c, d로 시작하는 character 찾기
[]    : [Dd]atabase  : Database 또는 database 찾기
[^]   : [^D]             : D가 나타나지 않는 라인 찾기


# sed '#d' filename      : # 라인만 삭제
# sed '$d' filename      : 마지막 라인 삭제 
# sed '#,$d' filename   : # 라인부터 마지막 라인까지 지우기
# sed '#,#d' filename   : # 라인부터 # 라인까지 지우기 
# sed '1d' sed_test     # 1 라인만 삭제
# sed '$d' sed_test     # 마지막 라인만 삭제
# sed '/purpose/d' sed_test > set_out     # sed 처리 결과를 sed_out 으로 저장
# cat set_out
# sed '/purpose/p' sed_test             # 패턴이 포함된 라인이 두번 출력(print)된다. 
# sed -n '/purpose/p' sed_test        # 패턴이 포함된 라인만 출력된다.
# sed 's/$/  Oracle/' sed_test       # 각 라인의 마지막에 원하는 글자 추가
# sed 's/  */#/g' sed_test              # space를 찾아서 #기호로 변환한다.
# sed 's/  */-/g' sed_test              # space를 찾아서 -기호로 변환한다.
                                                               # * 기호 앞에 space가 두개라는 점에 유의

## 한번에 여러 가지 편집 수행
# sed -e 's/database/DATABASE/g' -e 's/information/INFORMATION/g' sed_test

 

▒ awk : 패턴 검색과 처리를 위한 언어  >>  awk '{ action}' filename

# ls -l | awk '{print $0}'              # 전체 필드가 모두 나타나도록...
# ls -l | awk '{print $1}'                    # 1번 필드만 나타도록...
# ls -l | awk '{print $1, $9}'               # 1번과 9번 필드만 나타나도록...
# ls -l | awk '{print $3 "\t" $4 "\t" $9}'                # Tab 키가 적용된 결과...
# ls -lt | awk '{print $9, "is using", $5, "bytes"}'     # text 추가
# ls -lt | awk '$5 <= 200 {print $0}'   # 5번 필드가 200 이하일 경우 출력    






# linux sed사용법


sed로 텍스트 편집하기

sed (stream editor) : 그래픽 인터페이스가 없는 명령행 유틸리티임 그래서 많은 편집 작업을 일괄적!으로 처리하기에 아주! 적합한 도구이다.

sed는 파일을 한행씩 처리하고 현재 작업중인 라인을 패턴스페이스란 곳에 저장함

 

# 사용 문법

sed 'command' [filename]

sed s/regular_expression/replacement_String/flags input_file

 

ex) sed s/file_nmae/file_name/ > filename.txt


## sed 명령어들

d : 행 삭제

h : 패턴스페이스 내용을 홀드스페이스로 복사

H : 패턴스페이스 내용을 홀드스파이스로 추가

g : 홀드스페이스 내용을 패턴스페이스에 복사

G : 홀드스페이스 내용을 패턴스페이스에 추가

p : 행을 출력함

n : 다음입력

q : sed 종료

r : 파일로 부터 행을 읽어 온다

! : 선택된 행을 제외한 나머지 전체 행에 명령어를 적용

s : 문자열을 치환함


** s - 검색 & 치환

s는 검색과 치환을 수행한다는 뜻이다. 슬래시(/)로 검색하고 치환할 정규 표현식을 지정한다.

ex) sed s/filename/filename.txt/ filename.txt

filename.txt에 있는 filename이란 스트링을 filename.txt로 치환한다.  

 

** \ -역슬래시

역슬래시(\)는 이스케이프 문자라고 부르는데 \다음에 오는 문자는 정규표현식으로 해석하지 않는다.  결국 스트링에 특수기호가 포함되어 있을때 \를 사용한다.

ex) sed s/\$FL/\$FILELIST/ filename.txt

 

** 한행에 여러번 나오는 문자열 교체하기 (flag : g)

sed는 행단위 편집기로, 행을 한번에 하나씩 메모리로 읽은 후 한단위로 처리한다.

sed를 실행할 때는 이 사실을 명심해야한다. 모든 명령행 옵션도 이러한 설계 철학에 기반을 두기 때문이다.

기본적으로 행마다 sed 명령을 새롭게 적용한다고 이해하면 되겠다

그래서 한줄에 같은 단어가 2개 이상 있다면 하나만 바뀌고 끝난다.

 

filename : prj.txt

project : aaa.prj, project : aaa

project : ok

위에 내용에서 project를 project_name로 바꾸고 싶다면

 

sed s/project/project_name/ prj.txt

그러나!! 두번째 둘의 콤마(,)뒤의 project는 바뀌지 않은것을 볼수 있을 것이다.

그래서 다음과 같이 g flag(global)를 이용한다.

sed s/project/project_name/g prj.txt

 

** 선행검색 

s앞에 /string/을 사용하면 선행검색이 가능하다

ex) sed /okplayers/s/players :/artist :/ playerlists.txt

 okplayers가 있는 줄을 찾아 players :를 artist :로 바꾸어라

 

** 콜론(:)으로 끝나는 문자열 모두 변경하기

정규표현식을 이용한 sed 활용법을 정리해 보자

filename:$FLN

system "echo project:$project"

system "echo version:$version"

위의 문자에서 :으로 끝나는 문자열을 모두 변경하여 보자!!!

 

sed s/[a-z]*:/value:/g system.txt

 

변경된 내용은 다음과 같다

value:$FLN

system "echo value:$project"

system "echo value:$version"

 

그러나!! 이것보다 더 좋은 것이 있었으니,

일정 형식의 string에 앞에 어떤 단어를 추가 하고 싶을 때

기존의 filename:, project:, version: 앞에 new_를 추가 하고 싶으면 앰퍼센트를(&) 사용하면된다.

 

** 앰퍼센트(&)

위의 내용에서 각각의 콜론 앞 스트링에 new_를 붙이고 싶다면!!

filename:$FLN

system "echo project:$project"

system "echo version:$version"

 

sed s/[a-z]*:/new_\&/g system.txt

new_filename:$FLN

system "echo new_project:$project"

system "echo new_version:$version" 이렇게 됨 ㅎㅎ

 

와우 다음은 awk를 정리해 보아요 ㅎㅎㅎ

 

<출처>

http://blog.naver.com/PostView.nhn?blogId=heewon0117&logNo=120088332695&viewDate=&currentPage=1&listtype=0

[출처] sed, awk 사용법 2|작성자 오이씨


//
Linux 2014. 5. 7. 14:35

http://sourceforge.net/projects/procexp/

//
Linux 2014. 4. 9. 12:25

우분투 리눅스를 처음 설치하고 SSH 서버/클라이언트를 설치한후 외부에서 접속하면 꽤 긴 시간을 대기해야 한다.
이 문제를 해결하기 위해서는 /etc/ssh/sshd_config 파일에 다음 내용을 추가한다. 편집하기 위해서는 sudo 명령을 쓰거나 root로 접속해야 한다. 

UseDNS no


그리고 나서 ssh 서버를 다음 명령을 이용해서 reload 하면 된다. 

# /etc/init.d/ssh reload


다시 접속하면 매우 빨리 로그인을 하는 것을 볼 수 있다.


'Linux' 카테고리의 다른 글

sed awk 사용법  (0) 2014.06.01
Linux process explorer  (0) 2014.05.07
리눅스 로그 메일로 받기.(로컬에서만 가능!)  (0) 2013.08.03
tar를 이용한 백업  (0) 2013.02.12
시스템 백업과 복구  (0) 2013.01.29
//
Linux 2013. 8. 3. 22:52

logwatch - 정리된 시스템 로그 메일로 받기

 

logwatch 는 해당 로그 파일을 하루 단위로 종합적으로 정리를 해서 메일로 보내주는 데몬이다. 로그로 쌓이는 것을 다시 보기 좋게 재가공을 해서 다음날 메일로 받아 볼수 있게 된다. 

 

# logwatch 설치

 * 다운로드 

  http://www.logwatch.org >> logwatch-3.3-2.noarch.rpm 

 * 설치
 [root@cardsarang chtla]# rpm -Uvh logwatch-3.3-2.noarch.rpm 
  Preparing...                ########################################### [100%]
  1:logwatch               ########################################### [100%]
...

 

 * 설정 파일

 /etc/log.d/conf/logwatch.conf <== 설정 파일 
 /etc/log.d/scripts/logwatch.pl <== 크론에 의해 실행되는 파일(하루 한번)
 /etc/log.d/conf/services         <== 기록될 해당 서비스들을 각 설정을 세팅할수 있다.

                                                    디폴트로 사용하는 것도 무난하다.


 * 현재 지원되는 서비스
  arpwatch, automount, cron, dhcpd, exim, ftpd-messages, ftpd-xferlog, inentd, init, kernel,

  named, samba, sshd, sshd2 등이 있다.

 

 

# logwatch conf 설정

logwatch관련해서 conf파일은 /etc/log.d/logwatch.conf 파일이다. 이 파일에서 확인해 보아야 할것은 아래와 같이 두군데이다.

[root@chtla conf]# vi logwatch.conf 

LogDir = /var/log  <== 해당 로그 디렉토리
MailTo = root        <== 메일을 발송한 유저

혹시 메일 수신을 변경하려면 "MailTo" 부분을 다른 계정으로 변경하면 된다. 그러나, 이부분은 반드시 로컬계정만 가능하다.

 

만약, 일반 다른 메일로 보내고자 한다면, /etc/aliases 파일을 이용해서 보내야 한다. 아래 파일 내용을 보면 "root" 메일을 일반 다른 메일인 "webmaster@aaa.com"으로 보내게 처리했다.

[root@chtla conf]# vi /etc/aliase 
.....

# Person who should get root's mail
root:           webmaster@aaa.com

/etc/liases 파일을 수정하였다면 이를 적용하기 위하여 "newaliases" 명령어를 실행해 줘야 한다. 또한, sendmail이 설치되어 있어야 가능하며, 이부분에 대해서는 별도 공부하시기 바란다.

 

 

# 자동 메일 발송

설치후 달리 해 줄것이 없이 그냥 두면 크론(cront)에 의해 새벽 4시쯤에 로그 기록을 정리해 메일로 발송하게 된다.

[root@chtla scripts]# cd /etc/cron.daily/
[root@chtla cron.daily]# l
합계 9
lrwxrwxrwx   1 root  root     28  7월 15 16:57 00-logwatch -> ../log.d/scripts/logwatch.pl*
....

 


'Linux' 카테고리의 다른 글

Linux process explorer  (0) 2014.05.07
우분투 ssh 접속 시간 단축시키기  (0) 2014.04.09
tar를 이용한 백업  (0) 2013.02.12
시스템 백업과 복구  (0) 2013.01.29
리눅스에서 nfs(network file system)사용하기  (0) 2013.01.29
//
Linux 2013. 2. 12. 10:49

[ tar를 이용한 백업 (3) ]



O 백업 시나리오 



여러분이 서버 관리자라고 하자. 그러면 백업은 서버 관리자로서 필수 
사항이다. 제일 처음에 완전백업(full backup)을 받는다. 시스템의 모든 
파일을 백업받는다는 말이다. 다음처럼. 

$ tar -c -v -M -f /dev/st0 / 

완전백업본을 만약에 대비해서 2개 정도 만들어 둬도 좋다. 그리고 
정기적으로 완전백업본을 받아 두는 것도 좋을 것이다. 

완전백업을 받았으면, 월별 백업, 주별 백업, 일별 백업을 받는다. 각각 
지난달 1일 이후, 지난 주 월요일, 어제 이후로 바뀐 파일들을 백업 받는 
것이다. 

월별로 백업 받기 위해서 부분 백업 스크립트를 하나 작성하자. 매달 
1일에 돌리는 것으로 한다. 파일명은 month_back.sh로 하자. 

#!/bin/bash 
NOW=`date +"%d %b %Y"` 
THEN=`cat /.last_month` 
tar -c -v -M -G -f /dev/st0 -V "Backup monthly from \"$THEN\" to

\"$NOW\"" \ 
-N "$THEN" / 
echo $NOW > /.last_month 


주별로 백업 받기 위해서 부분 백업 스크립트를 작성하면 다음과 같다. 
월별 백업과 거의 같다. 매주 월요일날 돌리는 것으로 한다. 파일명은 
week_back.sh로 하자. 

#!/bin/bash 
NOW=`date +"%d %b %Y"` 
THEN=`cat /.last_week` 
tar -c -v -M -G -f /dev/st0 -V "Backup monthly from \"$THEN\" to

\"$NOW\"" \ 
-N "$THEN" / 
echo $NOW > /.last_week 


하루 하루 부분 백업 받기 위해서는 다음과 같다. 파일명은 day_back.sh로 
한다. 

#!/bin/bash 
NOW=`date +"%d %b %Y"` 
THEN=`cat /.last_day` 
tar -c -v -M -G -f /dev/st0 -V "Backup monthly from \"$THEN\" to

\"$NOW\"" \ 
-N "$THEN" / 
echo $NOW > /.last_day 


스크립트는 거의 같다. 중요한 것은 각각의 스크립트를 주기적으로 한달에 
한번, 한 주에 한 번, 하루에 한번 실행시키면 된다. 정기적으로 무언가를 
하기 위해 우리는 cron 유틸리티를 활용하면 된다. 

다음처럼 해서 간단히 cron에 작업을 등록할 수 있다. 

# chown root.root month_back.sh week_back.sh day_back.sh 
# chown u+x month_back.sh week_back.sh day_back.sh 
# cp month_back.sh /etc/cron.monthly 
# cp week_back.sh /etc/cron.weekly 
# cp day_back.sh /etc/cron.daily 


위와 같이 하면 한달에 한번 /etc/cron.monthly의 month_back.sh을 
실행한다. 
week_back.sh과 day_back.sh은 한주에 한번, 하루에 한번 crond에 의해 
실행된다. 

하루에 한번 실행될 때 몇시 몇분에 실행될 것인가를 정해주기 위해 
/etc/crontab을 편집하면 된다. 

[cornerstone@sylee:/etc/cron.daily] cat /etc/crontab 
1 SHELL=/bin/bash 
2 PATH=/sbin:/bin:/usr/sbin:/usr/bin 
3 MAILTO=root 
4 HOME=/ 
5 
6 # run-parts 
7 01 * * * * root run-parts /etc/cron.hourly 
8 00 1 * * * root run-parts /etc/cron.daily 
9 00 3 * * 0 root run-parts /etc/cron.weekly 
10 00 5 1 * * root run-parts /etc/cron.monthly 

위의 파일에서 7행에서 10행까지를 알아보자. 작업을 적어주는 양식은 

<분> <시> <일> <월> <요일> <실행할명령어> 

이다. 7행은 매시간 실행할 작업을 /etc/cron.hourly라는 디렉토리에서 
찾아서 실행하라는 것이다. 매시 1분에 실행된다. 8행은 매일 새벽 1시에 
/etc/cron.daily라는 디렉토리내의 스크립트를 실행하라는 것이다. 9행인 
경우에는 매월, 매일 새벽 3시에 무엇을 할 것 같지만 5번째 필드인 
<요일>필드의 값이 0 이므로 1주일에 한번 일요일에 /etc/cron.weekly 
디렉토리내의 스크립트를 실행하라는 것이며, 시간은 새벽 3시이다. 10행은 
독자의 해석에 맡기겠다. 

참고로 <분>은 0-59, <시>는 0-23, <날짜>는 0-31, <달>은
0-12(0또는 
12는 12월, 1은 1월...), <요일>은 0-7(0과 7은 일요일, 1은 월요일...)로 
나타낸다. 

시간대를 잘 조정하여 사용하면 된다.<끝>

//
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 터미널로 예를 들어봤습니다.


빠른 속도로 복구됩니다.

//