본문 바로가기

IT 관련정보/리눅스

리눅스 기본 이론(6) - 로그인 쉘, 프롬프트, 쉘 환경변수, 백업, rsync

1.로그인 쉘


/etc/shells에 정의되어 있는 쉘을 사용할 수 있다.

chsh -l


자신의 쉘 확인방법


1)grep 계정명 /etc/passwd 파일의 7번째 필드를 확인

2)echo  $SHELL


*자신의 쉘을 변경하는 방법

chsh

passwd:

NEW SHELL [/bin/bash]: 변경할 쉘을 절대경로로 입력한다.


재 로그인을 해야 쉘 변경값을 확인이 가능하다.


2.프롬프트 꾸미기


vi /etc/bashrc ===>재부팅후에도 사용하고자...


리눅스의 기볼 쉘 프롬프트 구조


[사용자@호스트이름 ~]


[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

                                                        위 부분 수정                                                 



위의 환경변수를 수정하면 즉시 환경이 적용된다.


환경변수를 백업하고자 아래의 구문을 입력한다.



위의 형식을 PS1 환경변수라고 한다.


SAVE=$PS1

백업한 환경변수를 다시 적용하려면


PS1=$SAVE


>


위의 형식을 PS2 환경변수라고 한다.


실습]현재 사용중인 터미널에서 환경변수 수정하기


SAVE=$PS1

PS1="\t"

시간


PS1=$SAVE


\a 아스크 종소리 문자(07)

\d 요일 월 날짜 형식으로 표시됨

\e 아스크의 escape 문자(33)

\h 호스트네임

\H 호스트네임

\n 줄바꿈

\r carrage return

\s 쉘의 이름

\t 24시간제 시:분:초

\T 12시간제 시:분:초

\@ 12시간제 오전/오후 형식으로 표시

\u 유저네임

\v bash 버전

\V 버전을 자세히

\w 현재 작업디렉토리

\W 현재 작업디렉토리

\! 현재 명령어의 히스토리 번호

\# 현재 명령어의 command 번호

\$ 유효한 UID가  0이면 #으로 표시하고, 그렇지 않으면 $로 표시

\nnn 8진수 nnn에 해당하는 문자

\\ 역 슬래쉬

\[ 프롬프트 시작 문자

\] 프롬프트 끝 문자


3.쉘 환경변수


환경변수를 확인하는 방법


set

pritenv

env



환경변수 수정

~/.bash_profile


환경변수명=값 형식으로 환경변수를 등록한다.


실습]호스트네임을 이니셜로 변경하기


export HOSTNAME=kimjs


SSH_AGENT_PID=4238

HOSTNAME=localhost.localdomain

DESKTOP_STARTUP_ID=

TERM=xterm

SHELL=/bin/bash

HISTSIZE=1000

GTK_RC_FILES=/etc/gtk/gtkrc:/root/.gtkrc-1.2-gnome2

WINDOWID=27263057

USER=root

LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:

GNOME_KEYRING_SOCKET=/tmp/keyring-NhzJLZ/socket

SSH_AUTH_SOCK=/tmp/ssh-byjVnm4203/agent.4203

SESSION_MANAGER=local/localhost.localdomain:/tmp/.ICE-unix/4203

MAIL=/var/spool/mail/root

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

DESKTOP_SESSION=default

QT_IM_MODULE=xim

GDM_XSERVER_LOCATION=local

INPUTRC=/etc/inputrc

PWD=/root

XMODIFIERS=@im=SCIM

LANG=ko_KR.UTF-8

GDMSESSION=default

SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass

SHLVL=2

HOME=/root

GNOME_DESKTOP_SESSION_ID=Default

LOGNAME=root

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-QUQilYs2HZ,guid=2d3ef5e5d71418cc3099ee005719ac01

LESSOPEN=|/usr/bin/lesspipe.sh %s

DISPLAY=:0.0

GTK_IM_MODULE=scim-bridge

G_BROKEN_FILENAMES=1

COLORTERM=gnome-terminal

XAUTHORITY=/tmp/.gdm8KDHGY

_=/usr/bin/printenv

OLDPWD=/root/0420/1




환경변수 수정

~/.bash_profile


환경변수명 = 값  형식으로 환경변수를 등록한다.




실습] 호스트네임 자신의 이니셜로 수정하기


export HOSTNAME=BLUEBLUE



============================================


백업

1.전체백업-제로데이백업

2.증분백업

3.차등백업


*tar를 이용한 로컬 데이터 미러링하기


사용법

tar cpf - --directory=/home/ . | (cd /data; tar xpf - )


[실습] /dev/sdc1하드디스크에 /etc/, /usr, /var, /home 디렉터리를

tar 명령을 이용하여 미러링한다.


*tar를 이용한 리눅스 운영체제 백업하기

리눅스 파티션중에서 /proc, /mnt, /media, /tmp 디렉토리는 백업과는 상관이 없다.

--exclude 옵션을 사용하여 백업대상에서 제외시킬 수 있다.


백업위치:/


tar cpvfz /jinsuk/CentOS5-backup.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/media --exclude=/jinsuk --absolute-names /



조별실습] 위의 운영체제 백업을 네트워크로 조별간 각각 백업하시오.

                   ***** 제한시간 15분 ******


rsync를 이용한 네트워크 서버 미러링

rsync를 이용하면 루트 권한없이 서버로부터 데이터를 빠르게 전송받을 수 있으며,.

원격서버의 데이터 변화가 있더라도 변화된 데이터를 저장할 수 있다.

다른 하나의 방법은 SSH를 이용하면 rsync 서버가 구축되어 있지 않더라도 미러링을 사용할 수 있다.


SSH를 이용한 원격 서버 데이터 미러링 하기

 rsync -avzr --delete -e ssh 계정명 @원격서버:데이터 경로 백업경로


예)rsync -avzr --delete -e ssh root@172.16.4.71:/home/ 0426


Tip.

원격 서버와 미러서버의 계정이 동일하면 계정명을 생략해도 되며,

다른 경우에는 반드시 계정명을 입력해주어야 한다.


rsync 패키지 설치

yum install rsync


vi /etc/rsyncd.conf

이 파일은 직접 생성해주어야 한다.

[rsync 서비스명]


comment=서버에 대한 도움말/설명

patch=미러링될 데이터의 홈디렉토리/경로

uid=사용자아이디

gid=그룹아이디

user chroot=yes | no 중에 선택

readonly=yes | no 중에 선택

host allow=허용할 아이피주소

max connections=최대 접속횟수(접속제한)

timeout=초단위설정

예시

[gnome8]


comment=centos5 Mirroring

patch=/home

uid=nobody

gid=nobody

user chroot=yes

readonly=yes

host allow=172.16.4.33

max connections=3

timeout=60

rsyncd.conf 파일을 수퍼데몬이 관리한다.


vi /etc/xinetd.d/rsync 설정


service rsync

{

disable = no

socket_type = stream

wait = no

user = root

service = /usr/bin/rsync

server_arps = --daemon

log_on-failure +=USERID

}


service xinetd restart


동작 테스트는


telnet localhost 873

netstat -na | grep LISTEN


로컬백업실습


rsync -avrz --delete 백업소스경로 미러링경로



원격백업실습


원격백업실습

rsync -avzr --delete 서버주소:서비스명  미러링경로



=>rsync -avrz --delete(변경된 것을 지움, 증분백업)


-------------------------------------------------------------------

1. http://rsync.samba.org/ftp/rsync/에서 최신판을 받아서 설치한다. 

 * 기본적으로 설치되어 운영됨( Redhat )


 2. 압축을 풀고 ./configure 실행


3. make 및 make install 실행


4. 서버 셋팅


- rsync 서비스를 연다


#vi /etc/xinetd.d/rsync 

 service rsync 

 { 

        disable = no    <<== 여기를 no로 해야 서비스가 시작 

       socket_type    = stream 

        wait            = no 

        user            = root 

        server          = /usr/bin/rsync 

        server_args    = --daemon 

        log_on_failure  += USERID 

 }


 -      셋팅파일을 만든다 


#vi /etc/rsyncd.conf 

 [source]                        =>rsync 에서 사용할 alias name 

 path = /data  => 실제 디렉토리 절대 경로 

comment = source directory        =>주석 

uid = root             => 파일 전송하는 사용자의 id. 기본값은 nobody

 gid = root             => 파일 전송하는 사용자의 그룹 id. 기본값은 nobody

 use chroot = yes  => 보안을 위해 path 경로를 root로 설정할지 여부 결정

read only = yes =>읽기전용(클라이언트에서 서버로 올리는 경우에는 read only=no로 설정을 해야 됩니다. )

hosts allow = 192.168.0.17 => 접근을 허용할 백업 서버 ip (기본 ALL로 설정되어있음)

max connections = 1 => 허용하는 접속 수

timeout = 300


 -      xinet를 재 시작함으로 데몬 시작 (기본 873 포트가 열린다.)


 #/etc/rc.d/init.d/xinetd restart 




- 포트가 열려있는지 netstat 이나 telnet 명령으로 873포트를 확인해본다.


 #telnet localhost 873


 Trying 127.0.0.1...

 Connected to localhost.

 Escape character is '^]'.

 @RSYNCD: 26



 #netstat -na | grep LISTEN

 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN


 873 포트가 보인다면 설정 완료.




5. 클라이언트 명령


- #telnet ***.***.***.*** 873

 Trying 127.0.0.1...

 Connected to ***.***.***.***.

 Escape character is '^]'.

 @RSYNCD: 26



만약 connect refuse 가 나오면 서버의 셋팅을 처음부터 다시 살펴본다. 위처럼 대기 상태이면 완료.



- rsync ?옵션 서버ip주소::서버셋팅aliasname 클라이언트에 저장될 디렉토리


Ex) rsync ?avz 192.168.33.4::source /data  =>서버의 source에 할당된 path에서 클라이언트의 /data폴더로 복사



6. rsync 옵션


-a는 아카이브 모드. 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존 

-v 전송 상태를 보여줌 

-z 전송시 압축을 함. 

-r recursive (하위 디렉토리까지 포함) 

-t 변경시간 전송 (이것이 없으면 전송한 시간으로 바뀜) 

--delete =>A서버에는 없는데 B서버에 있다면 지우라는 명령


--bwlimit=KBPS => I/O bandwidth 한계설정 (Kbytes/sec)