RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'Linux/개인서버Tip'에 해당되는 글 38
같이 여행다니는 지인들의 사진을 찍어주고 항상 인화해 줬었는데 요즘 들어 바쁘다보니 인화가
많이 밀려있다....
하여 지인들이 사진을 보고 싶다하여 어케줄 방법을 생각하다 프리하드인가 공개 웹하드 프로그램이
있길래 막상 설치해보니 버그도 많고 불편하더이다...

결국 남은건 FTP뿐.....근데 모두 컴맹 지인들이라 FTP가 뭔지도 모른다는....;;
하여 초등학생버전으로 사용법을 함 정리해봤다...

자...그림책으로 풀었으니 낼 접속들 해보삼~~~

설치파일은 여기.....

사용자 삽입 이미지
1. 뭐...설치야 셋업 누르면 되니 다들 할 줄 알것이고...
(이것까지 모른다면 대략 난감...;;)
설치 후 실행시키면 위의 화면이 뜨는데 편집 클릭하여 설정으로 들어간다.


사용자 삽입 이미지
2. 그림 그대로 활성에 체크한 후 확인버튼을 클릭~



사용자 삽입 이미지
3. 싸이트 관리자로 들어간다.


사용자 삽입 이미지
4. 새 사이트 클릭하면 그림처럼 되는데............


사용자 삽입 이미지
5. 호스트에 IP주소 내지 도메인네임을 적는다. 포트에는 아무것도 안적는다.
로그온형식은 보통으로 한다.


사용자 삽입 이미지

6. 사용자에는 접속id, 비밀번호는 말그대로 비번...연결을 클릭하지 말고 확인을 클릭한다.


사용자 삽입 이미지
7. 자...이제 다시 사이트관리자에 들어가서 test서버라고 이름지어준 것을 클릭하면 저장된
호스트 주소와 사용자id 비번이 뜨고.....연결을 클릭하면 접속된다.



사용자 삽입 이미지

8. 자...접속된 화면이다.....


사용자 삽입 이미지
9.좌측은 내 컴퓨터의 목록이고 우측은 접속된 서버의 목록이다.
다운로드 하고 싶은 폴더나 파일에 마우스 우측버튼 클릭하면 화면과 같은 창이 뜬다.
다운로드를 클릭하면 좌측 내컴퓨터의 지정된 폴더로 다운로드 된다.


사용자 삽입 이미지

10. 위의 그림에 보면 잘 알수 있듯이 좌측은 내 컴퓨터, 우측은 접속된 서버의 화면이다.
다운로드 받을때 좌측의 내 컴퓨터의 적당한 폴더를 지정해 주면 다운로드한 파일 관리하기가 쉽다.



사용자 삽입 이미지

11. 자...이제 접속을 끊을시간.....화면의 마우스커서가 위치한 버튼을 클릭하면 접속이 끊어진다....



대충 그려본 사용법인데 이것 보고도 모른다고 전화하면.....@_@


크리에이티브 커먼즈 라이센스
Creative Commons License
2009/02/02 22:14 2009/02/02 22:14
http://cafeall.com/trackback/481

test서버 방화벽 셋팅 (하도 자꾸 잊어버려서 기억하는 차원에서)

centos 64 버전(5.2) : 방화벽환경은 NAT가 필요없는 테스트 서버임(나홀로 내맘대로 서버...^^)
모든 버전은 기본 rpm버전이며 절대로 컴팔은 하지 않음!!!!!

#!/bin/sh
# 자체 서버 방화벽 룰 설정 파일
iptables -F -t filter
iptables -F -t nat
iptables -F -t mangle
# 기존에 설정되어 있을지 모를 룰을 모두 초기화한다.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 모든 룰에 매칭되지 않았을 때 실행될 기본 정책을 설정하는 부분이다.
# 자체 서버형태에서는 패킷을 다른 서버로 포워딩하지 않으므로 FORWARD chains 은
# 사용할 필요가 없다. 따라서 기본 정책으로 DROP 하고, OUTPUT은 가급적 허용하도록
# 한다. 단, INPUT에서는 반드시 DROP 하도록 한다.

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 루프백 인터페이스를 통해 오가는 트래픽은 허용한다.
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 255.255.255.255/32 -j DROP
iptables -A INPUT -i eth0 -s 0.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 169.254.0.0/16 -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 192.0.2.0/24 -j DROP
#iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth0 -s 224.0.0.0/4 -j DROP
iptables -A INPUT -i eth0 -s 240.0.0.0/5 -j DROP
iptables -A INPUT -i eth0 -s 248.0.0.0/5 -j DROP
# INPUT 패킷중 RFC 1918 에 정의된 사설 ip 및 일반적인 인터넷에서는 사용될 수
# 없는 ip 또는 ip 대역을 소스로 한 패킷을 차단한다.
# 위의 경우 외부 네트워크의 인터페이스로 eth0을 사용하는 경우이다.

# ssh buste attack rule
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSHSCAN
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
 --seconds 60 --hitcount 5 --rttl --name SSHSCAN -j LOG --log-prefix SSH_Scan:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update \
 --seconds 60 --hitcount 5 --rttl --name SSHSCAN -j DROP

iptables -A OUTPUT -d 10.0.0.0/8 -j DROP
iptables -A OUTPUT -d 255.255.255.255/32 -j DROP
iptables -A OUTPUT -d 0.0.0.0/8 -j DROP
iptables -A OUTPUT -d 169.254.0.0/16 -j DROP
iptables -A OUTPUT -d 172.16.0.0/12 -j DROP
iptables -A OUTPUT -d 192.0.2.0/24 -j DROP
#iptables -A OUTPUT -d 192.168.0.0/16 -j DROP
iptables -A OUTPUT -d 224.0.0.0/4 -j DROP
iptables -A OUTPUT -d 240.0.0.0/5 -j DROP
iptables -A OUTPUT -d 248.0.0.0/5 -j DROP
# OUTPUT chain 에 대한 설정으로 비정상적인 ip 또는 ip 대역을 목적지로 한 패킷을
# 거부한다. FORWARD 는 어떠한 트래픽도 허용하지 않으므로 별도로 언급하지 않아도
# 된다.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 상태 추적에 따라 허용되어 이미 세션을 맺은 후 뒤따라오는 패킷은 허용하도록 한다.

iptables -A INPUT -i eth0 -p TCP ! --syn -m state --state NEW -j DROP
# tcp 패킷중 상태추적에는 NEW 이면서 syn 패킷이 아닌 패킷을 필터링한다.
# 이외의 패킷은 모두 위조된 패킷이기 때문이다.

iptables -A INPUT -i eth0 -p ALL -m state --state INVALID -j DROP
# 상태추적 테이블에서 INVALID 인 패킷은 차단한다.

iptables -A INPUT -i eth0 -p TCP --sport 1024: --dport 80 -m state --state NEW -j ACCEPT
# 웹 서비스를 제공할 때 목적지 포트가 80번으로 향하는 초기(NEW) 패킷은 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 21 -m state --state NEW -j ACCEPT
# 모든 대역에서의 ftp 접속을 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 22 -m state --state NEW -j ACCEPT
# 모든 에서의 ssh 접속을 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 3306 -m state --state NEW -j ACCEPT
# 모든 에서의 mysql 접속을 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 20 -m state --state NEW -j ACCEPT
# 모든 에서의 ssh 접속을 허용한다.

iptables -A INPUT -i eth0 -p TCP --sport 1024: --dport 25 -m state --state NEW -j ACCEPT
# SMTP 서비스를 제공할 때 외부에서 오는 메일을 받아 서버에 저장하거나 다른 서버로
# 보내고자 할 때 필요하므로 25/tcp를 허용한다.

iptables -A INPUT -i eth0 -p TCP -s 0/0 --sport 1024: --dport 110 -m state --state NEW -j ACCEPT
# pop3 서비스를 제공할 때 110/tcp 번으로 향하는 초기(NEW) 패킷을 허용한다.

iptables -A INPUT -p ICMP --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type network-unreachable -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type host-unreachable -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type port-unreachable -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type fragmentation-needed -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type time-exceeded -j ACCEPT
# icmp 와 관련된 패킷을 허용한다.
# 허용하고자 하는 icmp type을 지정하면 된다.


전반적인 내용은 kisa 방화벽 가이드와 일치한다.

스크립트 작성후

chmod +x iptables 로 실행권한 부여한다.
그리고 ./iptables 후 iptables -L로 확인

/etc/sysconfig/iptables-config 에서

IPTABLES_SAVE_ON_STOP="yes"

# Save current firewall rules on restart.
#   Value: yes|no,  default: no
# Saves all firewall rules to /etc/sysconfig/iptables if firewall gets
# restarted.
IPTABLES_SAVE_ON_RESTART="yes"

2가지 yes로 변경 후 (말그대로 리스타트 할때, 그리고 스톱시킬때 자동 세이브한다는 내용)

/etc/rc.d/init.d/iptables save 하면 기존 스크립트가 /etc/sysconfig/iptables에 저장된다.

ssh 환경 셋팅

/etc/ssh/sshd_config 에서

AllowUsers test --->test 유저만 접속가능
PermitRootLogin no--->#제거후 yes에서 no로. 루트접속금지

아직 apm 셋팅이 남았꾸나~~~
얼능 셋팅하고 웹하드 꾸며서 영화 돌려봐야징~~~~^^
크리에이티브 커먼즈 라이센스
Creative Commons License
2009/01/06 12:01 2009/01/06 12:01
http://cafeall.com/trackback/478
요즘 백업하고 있는 방법

#!/bin/sh
rsync -avz --delete /home/falcon/* /backup/falcon/
rsync 로 백업하는 이유는 동호회 홈피의 용량이 거의 30G인데 이것을 tar로 백업하려니
상당히 서버에 로드가 많이 걸린다.
하여 수정된 부분만 백업받고 --delete 옵션을 주어서 계정내 지워진 파일을 백업 디렉토리에서도
지워준다.

#!/bin/sh
backup_dir=백업디렉토리
DATE=$(date +%Y%m%d)
/usr/bin/mysqldump -uroot -p###### falcon > $backup_dir/$DATE.falcon.sql
디비백업 방법에는 별로 변화된것은 없다.

추가로
#!/bin/sh
backup_dir=백업디렉토리
find $backup_dir/*.* -mtime +2 -exec rm -f {} \;
스크립트를 실행시켜서 2일전에 백업한 DB는 지워준다.
여기서 -mtime +2를 해야 2일전 백업한 것을 지워준다. 여기저기 인터넷 서핑질로 자료를 찾은결과
거의다 -mtime -2로 나와 있었는데 +2를 해야 되더군.
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/24 22:03 2008/04/24 22:03
http://cafeall.com/trackback/416
다들 서버접속시 한글putty 사용들 하실꺼다.
나 역시도 그렇고.....

근데 사용할수록 ls 명령어로 출력되는 디렉토리의 서퍼런색이 영 눈도 아프고 맘에 들지 않았다.
우째우째 웹서핑중에 발견한 해결책....

vi .bashrc 하던지 vi /etc/bashrc 하던지 하여튼
LS_COLOR="di=01;31" 을 추가한다.

사용자 삽입 이미지
원래 색깔....시퍼런 색깔....눈이 아프다.

사용자 삽입 이미지
수정후 색상.....
퍼런 색깔의 디렉토리가 진한 분홍색(?)으로 바뀌었다.

진작에 수정할것을.....^^
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/23 10:25 2008/04/23 10:25
http://cafeall.com/trackback/415
vmware에서 윈도우파일 공유하기

1.vmware 셋팅으로 들어간다

resize_image

2. 그림책을 보면 그닥 복잡한것 없다.
Folder Sharing 선택 3가지중 당근 2번째....하고 Add 버튼을 누른다.
resize_image

3. Next버튼 누르면 된다.
resize_image

4. Name에는 guest os 의 폴더명을 (난 리눅스)
   Host folder에는 host의 폴더명을 (난 엑수피)-->아..옆의 브라우져버튼으로 공유폴더 지정한다.
resize_image

5. Enable this share 에 체크박스하고 Finsh 버튼 클릭
resize_image

6. 맨 아래의 OK버튼을 누르면 끝....
resize_image

7. 최종 마지막....스샷~~~
resize_image

8. 진짜 공유가 됐는지 확인사실 들어가자....
아래와 같이 똑같이 파일이 들어가 있다.
guest os 에서의 공유폴더는 요~~아래에 보면 나와있다.
4.번에서 Name에 centos5.1이라고 적어준것 기억나는가???
/mnt/hgfs아래에 centos5.1이라고 생겼고 임의로 파일을 하나 복사해서 넣어 보았다.
근데 왜 /mnt/hgfs 아래에 공유폴더가 생기는지 나도 모르니 혹시나 묻지 말았으면 한다....^^
resize_image

Tip 하나....
혹시나 이순서대로 따라했는데 공유가 안되고 guest os에 공유폴더 즉...
/mnt/hgfs/centos5.1 이라는 폴더가 안보이시는분은 계속 삽질하지 말고 터미날에서 reboot 치기
바란다.....나도 회사 컴에서 할때 공유폴더가 안보여서 삽질하던중 guest os 리붓하니 해결됐따~~~
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/11 09:29 2008/04/11 09:29
http://cafeall.com/trackback/405
from.Torture.  2011/08/22 15:58
Medieval torture. Enema torture. Nipple torture.
from.Torture methods.  2011/08/23 13:06
Tit torture.
요즘 갑지기 이것이 궁금해졌다.
사건(?)의 발단은 이번 서버 구매하면서 centos+apm 셋팅을 의뢰했는데(뭐...서버구매하니 공짜여서였지만)
apm을 소스로 설치해줬다.

그래서 갑자기 궁금해졌다.....왜 소스로 설치를 할까???
rpm으로 설치하면 패키지 관리 및 업데이트가 손쉬울텐데.....

다음은 서버호스팅업체에 문의한 결과이다.


셋팅 상담시 담당자와 문의사항에 대한 답변을 못해드린거 같습니다.

고객님이 문의하신 APM을 RPM이 아닌 Source로 셋팅하는 이유는 두가지로 답변드릴 수 있겠습니다.


첫째, SOURCE 설치방식은 실무에서 많이 사용되는 방법입니다.

RPM 설치의 경우 RPM으로 되어 있어 쉽게 설치할 수 있고 업데이트, 유지관리가 편리하다는 장점이 있으나,
미리 정해진 옵션값에 의해 설치가 되므로 보다 상세한 설치가 어렵습니다.


SOURCE 설치의 경우 서버운영목적에 맞도록 옵션 값을 주어 소스 컴파일 하며, DSO(동적방식)으로 설치되므로
나중에 필요한 아파치 모듈 추가 설치시 모듈만 컴파일하여 사용할 수 있는 장점이 있습니다.


둘째, 향후 업데이트나 패치가 필요한 경우 다음과 같이 작업하시면 됩니다.

- APACHE : 아파치 설정파일, 버추얼호스트 설정파일 등을 중요파일은 따로 백업 받아두시고,
          새로운 버전으로 컴파일한 다음 백업해둔 파일을 복구하시면 됩니다. 
          설치는 DSO방식으로 하시면 됩니다.

- PHP : APACHE가 DSO방식으로 설치되므로, 동일 옵션값을 주어 PHP만 컴파일 하시면 됩니다.

- MySQL : 같은 버전대에 한해 (4.0.21 -> 4.0.22) DB는 mysqldump 명령으로 dump 받아두신 다음,
          업데이트 컴파일 후 받아둔 dump 파일로 DB를 복원하시면 됩니다.



질문사항을 요약하자면.

RPM 설치는 패키지 업데이트 관리적 측면에서 편리하나, 옵션을 주어 셋팅을 하지 못하므로,
SOURCE로 설치하는 방식에 비해 세부적인 셋팅이 어렵다.

SOURCE 설치는 세부적인 옵션을 주어 컴파일 셋팅하므로, 서버 환경에 맞는 맞춤설치가 가능하다.

이러한 이유로 저희 스마일서브에서는 고객 여러분에게 각 APM버전에 대한 맞춤설치를 해드릴 수 있도록
SOURCE 방식을 권장하여 설치를 해드리고 있습니다.



감사합니다.


음...그래도 뭔가 시원하게 궁금증이 풀리진 않는다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/10 15:15 2008/04/10 15:15
http://cafeall.com/trackback/403

정확하게 10여년만에 설치해본 X원도우......
예전에 알짜리눅스인가.....가지고 놀때 설치해보곤 거의 쓸일도 없고 해서 설치안한 기억이...

이번에 vmware 설치하면서 옛기억을 떠올리며 한번 설치해봤다.
불여우로 인터넷서핑을 하는것이 참 새롭다는 느낌....

vmware 설치하면서 조금 삽질....;;
네트웍설정부분과 vmtools 설정하는 부분에서 쪼금......삽질....ㅎ~
생각보단 가상머신이 잘돌아가는 느낌....
삽질한 부분은 따로 정리해 두어야겠당....

10년만에 X윈도우 설치한 기념 스샷~~~~ㅎ~

resize_image

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/09 13:32 2008/04/09 13:32
http://cafeall.com/trackback/402
1. 부팅 디스켓 만들기

먼저 부팅디스켓으로 사용할 커널 이미지를 선택한다.
그리고 선택한 커널 이미지가 root 장치(root mount point)가 재대로 잡혀 있는지
확인한다.

# rdev /boot/vmlinuz
Root device /dev/hda1

만일 루트 장치가 현재 잡혀 있는거랑 틀리다면 아래와 같이 수정한다.

# rdev /boot/vmlinuz /dev/hda3
#

이제 깨끗한 플로피 디스켓 하나 준비하고 포맷한다.

# fdformat /dev/fd0
# dd if=/boot/vmlinuz of=/dev/fd0 bs=8192


2. 일반유저에게 장치 mount 허가하기

특정 장치를 일반유저에게 mount/umount 하게 해주기 위해서는 /etc/fstab 에서
허가할 장치의 옵션에 user 이란 옵션을 추가 해 주어야 한다.
혹은 mount/umount 명령어의 퍼미션을 setuid 로 해주어도 가능하다.

3. 파일 시스템 만들기

mkfs 명령어 사용

# mkfs -t ext2 /dev/hdb1
# mkfs -t ext2 /dev/fd0

플로피 파일 시스템 만들기

# fdformat /dev/fd0
# mkfs -t ext2 -c /dev/fd0 -v

-c : 블럭체크
-v : 진행과정 display

파일시스템 점검 수리

# fsck -t [type] [device]

fsck 파일 점검은 가능한 umount 한 후에 실행한다. 하지만 / 을 mount 하지 않은
면 당근 부팅이 제대로 될수 없기에 / 를 체크할때는 플로피로 부팅을 하던지 아님
single mode 로 부팅한후 체크 한다.

체킹후 mount -t -w -o remount /

해주면 된다.

4.긴급 스왑 메모리 추가 하기

# touch /swap
# dd if=/dev/zero of /swap bs=1024 count=8192
# sync
# mkswap -c /swap 8192
# swapon /swap

하면 8M 의 스왑메모리를 추가 할수 있다.
이밖에 여유공간에 파티션을 나누고 /etc/fstab 에 추가 해 주어도 가능하다.


5. 파일을 묶고 압축하기

리눅스 시스템 관리자가 반드시 숙지하고 있어야 할 기술중 하나가 파일을
묶고, 압축하는 기술이다. 보다 효율적인 안정된 시스템 관리를 위해서는
파일이나 디렉토리를 이동하거나 백업하기 위해 파일의 속성과 디렉토리
구조들을 유지한체 이동하게 하는데 필요한 tar 나 대용량의 파일을 압축
하는 gzip 등의 명령어를 자유자재로 다루어야 할것이다.

[ gzip 사용하기 ]

[root@zzang911 alang]# ls -l tttt
-rw-rw-r-- 1 alang alang 1228 7월 25 13:58 tttt

[root@zzang911 alang]# gzip tttt

[root@zzang911 alang]# ls -l tttt*
-rw-rw-r-- 1 alang alang 747 7월 25 13:58 tttt.gz

위에서 보는 바와 같이 gzip file_name 적으면 file_name.gz 란 압축파일이 만들어
진다. tttt 파일을 압축시켜서 tttt.gz 란 파일을 만들고 tttt 파일을 지워버리게
된다.

하나 유의해야 할점이 있다. gzip 은 zip 처럼 여러개의 파일을 하나로 묶어서 압축
하지 않고 파일별로 gz 란 확장자를 붙이며 압축해 버린다. 그렇기 때문에 파일을
묶는 tar 와 같이 사용해야 한다.

gzip 파일로 묶인것을 확인하기 위해서는 -l 옵션을 사용한다.

[root@zzang911 alang]# gzip -l tttt
compressed uncompressed ratio uncompressed_name
747 1228 41.0% tttt
그리고 압축을 풀기 위해서는 gunzip 이나 gzip -d 를 사용하여 압축을 해제할수가
있다. 그리고 압축을 해제하면 압축된 파일은 제거 되어 진다.

이밖에 gzip 은 표준출력을 바로 압축할수도 있다.

# ls -alR $HOME | gzip > home.gz

이와 같이 하면 $HOME 디렉토리 하위 파일을 home.gz 으로 압축하게 된다.
이밖에 다른 옵션으로 -1 ~ -9 까지의 옵션이 있는데 이는 압축률을 정하는 옵션
이다. gzip -1 file_name 하면 압축속도는 빠르나...압축률은 낮다. 그리고 -9
옵션을 사용하면 압축속도는 느리지만 압축률은 상당히 높게 되어진다.

[ tar 사용하기 ]

tar 는 파일의 허가권이나 소유권등의 정보를 유지하면서 많은 파일들을 하나의 파일로
묶어 주는 기능을 가진 아카이브 유틸리티이다. 예전엔 여러파일을 하나로 묶어 테잎에
백업을 받기 위한 도구로 사용되어졌지만 지금은 여기에 국한되는 것이 아니라 다양한
기능들을 제공한다. 다음 형식으로 사용되어진다.

tar [옵션] [묶은 파일명] [묶을 파일들]

옵션에는

c : 새로운 아카이브의 생성
x : 아카이브로 부터 파일 추출
t : 아카이브에 담긴 내용을 나열
r : 아카이브의 마지막 부분에 파일 추가
u : 아카이브에 있는 기존 파일보다 새로운 파일로 업데이트
d : 아카이브에 있는 파일과 비교
v : 아카이브 생성이나 추출시 과정을 보여준다.
k : 아카이브를 추출시 기존에 같은 파일이 있으면 그 파일을 보존한다.

디들중 c,x,v,t 를 제외한 나머지는 자주 사용되지 않는다.
파일을 묶고 푸는 대표적인 예를 하나씩 들어본다.

# tar cvf file.tar /home/file
/home/file 이란 디렉토리에 있는 모든 파일과 디렉토리를 그대로 file.tar
란 파일로 묶어버린다.

# tar x

# tar cvf bin.tar /bin

로 파일을 묶은후 bin.tar 로 풀때는 다음과 같은 경고 메세지가 출력하게 된다.
tar: Removing leading / from absolute path names in the archive.

이는 만약에 있을 위험을 방지하기 위해서 나타나는 현상이다.
다시말해 bin.tar 를 풀었을때 압축 디렉토리와 같이 /bin 에다가 압축이 풀리면
시스템에 이상이 생길지도 모른다. 그래서 tar 로 파일을 풀때는 현재 디렉토리를
기준으로 하여 파일이 풀리게 되어져 있다. 이점을 유의하길 바란다.

[ tar 와 gzip 같이 사용하기 ]

위에서 본바와 같이 특정 디렉토리나 파일들을 tar 로 묶은후 gzip 을 사용하여
압축하는 방식이다. 과정을 풀어서 본다면 다음과 같다.

# tar cvf file_name.tar /home
# gzip -9 file_name.tar

이와 같이 하면 된다. 하지만 이방법은 번거로울뿐아니라 gzip 으로 압축되기전까지
tar 파일을 보관할 충분한 디스크 공간이 확보되어 있어야 한다.

# tar cvf file_name.tar /home | gzip -9 > file_name.tar.gz

이와 같이 하면 된다.

GNU tar 버젼에서는 gzip 기능을 포함하여 사용할수 있도록 되어져 있다.

# tar czvf file_name.tar.gz /home

위와 같이 z 옵션을 사용하면 된다.

6. 라이브러리에 대하여

라이브러리란 시스템에서 프로그램을 직접 컴파일 할때 많은 프로그램에서 공통으
로 사용할수 있는 유용한 기능을 포함하고 있는 파일이다.
많은 프로그램들이 이런 라이브러리를 각 프로그램마다 포함하고 있지 않고 정보
만 가지고 있다 컴파일 당시 시스템 자체에 있는 라이브러리를 이용하여 컴파일이
되어지는 것이다.

어떤 경우에는 컴파일시 위와 같은 공유라이브러리를 이용하지 않고 자체적인 라이
브러리 루틴을 사용하기도 하는데 이런 프로그램을 정적으로 링크된(statically
linked) 프로그램이라고 하며 공유 라이브러리를 이용해 만들어진 것은 동적으로
링크된 프로그램이라고 한다.

동적으로 링크된 실행 파일은 공유라이브러리가 디스크에 존재하느냐에 의존한다.
이와 같은 방법으로 구현된 공유 라이브러리로 컴파일돈 프로그램은 일반적으로
현재 라이브러리의 버전에 의존하지 않는다. 즉 공유라이브러리를 업그레이드시
키면 프로그램 역시 업그레이드된 기능을 적용받게 되어져 있다.
단..라이브러리에 큰 변화가 있다면 오래된 프로그램은 새로운 라이브러리와 같
이 작동안할수도 있다. (glic-2.1.x 와 glibc-2.2.x 대에서의 문제와 같이..)

ldd 명령은 실행파일에 의존되는 라이브러리 목록을 보여주는 명령어 이다.

[root@zzang911 /root]# ldd /usr/bin/X11/xterm
libXft.so.1 => /usr/X11R6/lib/libXft.so.1 (0x4002d000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x40052000)
libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x40088000)
libXaw.so.7 => /usr/X11R6/lib/libXaw.so.7 (0x4008d000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x400e2000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x400f8000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40145000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4014f000)
libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x40166000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40175000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40183000)
libncurses.so.5 => /usr/lib/libncurses.so.5 (0x40263000)
libutempter.so.0 => /usr/lib/libutempter.so.0 (0x402a5000)
libc.so.6 => /lib/i686/libc.so.6 (0x402a7000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

/etc/ld.so.conf 파일은 공유라이브러리 파일을 찾는 ld.so 에 대한 디렉토리
목록을 포함하고 있다.

[root@zzang911 /root]# cat /etc/ld.so.conf
/usr/local/lib
/usr/lib
/usr/kerberos/lib
/usr/X11R6/lib

ld.so.conf 에서 빠진 내용은 각 계정의 환경변수 설정에서 LD_LIBRARY_PATH에
검색경로로 디렉토리를 추가해 주면 된다. 환경변수 설정은 .bash_profile 나
.bashrc 에 추가해주면 된다.

아무튼 ld.so.conf에 새로운 항목을 추가 하였다면 다음명령어를 사용하여 적용
을 시켜 주어야 한다.

# ldconfig

이 명령어는 ld.so 의 검색 경로에서 공유 라이브러리 캐시를 재생성하게 된다.
이캐시 내용을 참조하여 보다 빨리 라이브러리를 찾기위해서 이다.

[ 라이브러리 업그레이드 하기 ]

먼저 /lib 디렉토리 내용을 보도록 하자.

-rwxr-xr-x 1 root root 1236396 4월 7 06:58 libc-2.2.2.so*
lrwxrwxrwx 1 root root 13 5월 5 04:23 libc.so.6 -> libc-2.2.2.so*

라이브러리를 업그레이드 할때는 라이브러리에 부합되는 .a 와 .so.version 파일
을 반드시 대체해야 한다.

.a 파일은 새로운 대체파일로 복사해 주면 되지만 공유라이브러리를 대체할때는
보다 주의를 요한다. .so.version 의 경우는 위에서 보는 바와 같이 libc.so.6 파일이
실제 파일인 libc-2.2.2.so* 에 링크되어져 있다. 새로 업그레이드 하여 libc-2.2.3.so
파일을 적용하기 위해서는 그냥 링크를 깨난던지 아님 파일 이름을 바꾼다던지 하면
시스템의 모든 명령어가 먹히지 않는 경우가 발생하게 된다. 그렇기 때문에 새로 업그레
이드 된 파일을 /lib 디렉토리에 옮겨놓고 ln -sf 명으로 링크의 연결을 새로운 파일이
있는곳으로 한번에 가도록 변경한다.

# ln -sf libc-2.2.3.so libc.so.6

7. 백업 하기

데이타 백업하기에 대해서 간단히 적겠습니다.

보통 데이타 백업은 하드나 테잎장치,혹은 플로피 디스켓등에 하는데...
플로피는 빼도록 하죠...요즘에 플로피 쓰는 곳은 없으니깐..

[ 테잎장치에 빽업하기..]

보통 백업은 tar, gzip 을 이용하여 백업을 합니다. 상용 백업 프로그램이라고
하더라도..이 두 명령어를 잘 이용한거라고 볼수 있습니다.

테잎에 백업하는 대표적인 예는 ..

# tar cvf /dev/rft0 /home

와 같은 형식입니다.

/dev/rft0 는 테잎 디바이스 명입니다.

테잎 하나에 tar 파일 하나 저장하는 사람은 없을거라 봅니다. 여러개의 tar
파일을 하나의 테잎에 저장할 경우 첫번째 tar 파일이 테잎에 저장된후 다시
처음으로 감기는 것을 방지하기 위해 다음 파일의 시작점을 표시해 두게 됩니다.
테잎이 다시 감기는 것을 방지하려면, 플로피 테잎 드라이브인 경우 /dev/nrft0
, /dev/nrft1을, SCSI 테잎 드라이브라면 /dev/nrst0 와 /dev/nrst1 이라는
이름으로 된 테잎 장치를 사용해야 합니다.

이렇게 자동으로 감기지 않는 테잎 장치를 사용한다면 용량이 허락하는 만큼의
많은 파일을 저장할수 있다.

이런 테잎 장치에서 테잎을 다시 감을려면...

# mt /dev/nrtf0 rewind 혹은
# mt /dev/nrtf0 reten

테잎의 다음 파일로 건너뛰기는(테잎은 순차적 접근 방식이기 때문에...)

# mt /dev/nrft0 fsf 1

두개의 파일 건너뛰기..

# mt /dev/nrft0 fsf 2

이런식으로 제어 하면 된다.


대부분의 리눅스 서버 관리자들은 테잎은 안쓰는 걸루 안다..^^;; 왜~~
느리니깐...귀찮아서...새로운 장비 살 돈이 없어서...여러가지 이유가
있지만...속도문제가 큰거 같더군요..가끔 한번식하는 전체 백업같은
경우엔 상관없지만..웹호스팅 업체나 매일 백업을 해야 하는 자료 업로드
량이 많은 사이트 경우엔..비합리적일수도 있는거 같더군요.

그냥 싼 IDE 하드 하나 달아 놓고...백업장치로 사용하는게 속 편한거 같네요.

그럼..실질적인 백업 기법에 대해서 설명하도록 하겠습니다.

일단 파일을 묶는 tar 에 대해서 알아보자..
tar 는 단순히 파일이나 디렉토리들을 속성을 유지한체 하나의 파일로 만드는
기능을 합니다. 옵션에 따라 ..gzip처럼 압축도 할수 있습니다.


# tar cvf test.tar /home/test

/home/test 디렉토리를 test.tar 이란 파일로 묶는다.

# tar czvf test.tar.gz /home/test

/home/test 디렉토리를 test.tar 로 묶은 다음 gzip 으로 압축한다.

# tar czvfp test.tar.gz /home/test

/home/test 디렉토리를 모든 속성과 권한을 현재 그대로 유지한체 압축한다.


이정도면 압축하는데 무리가 없을것이다.

누적 백업시에는 find 명령어를 잘 활용해야 한다.

먼저 날짜별로 변경된 파일을 찾아서 리스트를 만들고 이 리스트를 참조하여
백업을 할수 있다.

# find /home/test -mtime -1 \! -type d -print > filelist
# tar -cv -T "filelist" -f test.tar

위의 예문은 find 로 /home/test 밑의 파일들중 하루(-mtime -1) 동안 변경된
모든 파일을 검색하고 그중 디렉토리는 제외 (\! -type d)하여 출력하고 출력
내용을 filelist 에 저장하라는 뜻이다.

그런후 작성된 filelist 속의 기재된 파일들을test.tar 로 묶으라는 의미입니다.

이와 같은 명령어를 잘 응용하면 여러가지 백업스크립트를 만들수 있을것입니다

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/05 17:40 2008/04/05 17:40
http://cafeall.com/trackback/398
아래 시스템 관리상 꼭 필수적인 명령어 몇개를 소개하고자 합니다. 시스템
관리자라는 흔히 사용하는 명령어 들입니다. 하지만 대부분이 명령어의 기
능을 다 활용하진 않으시는거 같더군요.
여기에 소개하는 내용이 이 명령의 들의 모든 기능이라고 말하진 않습니다.
다만..이 명령어를 이용하여 시스템을 관리하는 방법을 보다 깊게 소개하고
자 합니다. 어떤분에겐 이정도는 기초이자 기본이라 생각하시는 분들도 계실
것이고 어떤분에겐 자신의 기반을 더더욱 확장시킬수 있는 좋은 자료가 되실
거라 생각이 됩니다. 그럼..천천히 한번 읽어보세요.

작성자 : 서 진우 (alang@sysmng.com)
-------------------------------------------------------------------------

1. 시스템 관리 명령 [1] - grep (egrep,fgrep)

다들 아시다 시피 grep 은 입력에서 주어진 패턴을 포함하고 있는 줄을 찾아
주는 명령이다. 많은 시스템 관리 명령들과 파이프(pipe)를 이용해서 사용할
수 있다. 흔히 사용하는 것은 프로세스 확인이다.

# ps aux | grep httpd

위와 같이 현재 시스템의 프로세스중 httpd 만 검색해 낸다.
만일 pipe 를 이용하여 검색할경우 검색 패턴이 한개 이상일 경우엔 egrep
을 이용하여 검색할수 있다.

# ps aux | egrep 'httpd|mysql'

이밖에 grep 는 file 내용증에 특정 pattern 이 들어 있는 행을 찾아서 출력
해 준다 option 을 이용하여 보다 다양한 pattern을 선택하여 검색할수 있다.

option :
----------------------------------------------
-i : 대소문자 구별을 하지 않는다.
-v : pattern 을 포함하지 않는 행만 출력한다.
-n : 행번호를 출력한다.
-l : 파일명만 출력한다.
-c : 패턴과 일치하는 라인의 갯수만 보여준다.
----------------------------------------------

몇가지 예를 들어 보겠다.

# grep [option] "pattern" 파일명

대표적인 사용방법이다. 파일에 pattern 이란 단어를 포함하는 행을 출력한다.

# grep -v "^[ ^I]*$" 파일명

위는 공백을 제거한 파일 내용 살펴보기

# grep -v "^#*$" 파일명

위는 주석을 제거한 파일 내용 살펴보기

이밖의 패턴과 정확히 일치하는 것만을 찾아주는 fgrep 가 있다.
grep,egrep,fgrep 의 옵션으론 위의 옵션을 공통적으로 사용한다.

마지막으로 유용한 팁 하나 소개하죠. grep 는 현재 디렉토리에 존재하는 파일
만을 검색한다. 만일 현재 디렉토리와 그 하위 디렉토리까지 grep 패턴 검색을
하고자 할땐 find 명령을 이용하면 된다.

# find . -exec grep "pattern" {} \;

2. 시스템 관리 명령어[2] - awk

awk 는 grep 과 같이 출력된 문장에서 필요한 부분한 걸려내는 필터역활을 하는
명령어의 일종입니다. 사용하기에 따라서 매우 유용하지요..

[root@zzang911 /]# ls -al
drwxr-xr-x 2 root root 0 11월 3 10:16 misc/
drwxr-xr-x 4 root root 4096 8월 9 00:41 mnt/
drwxr-xr-x 2 root root 4096 8월 24 1999 opt/
dr-xr-xr-x 113 root root 0 11월 3 10:16 proc/

위의 출력문은 tab (공백)으로 각 컬럼을 구분하는데 다음과 같이 하면 원하는 컬럼
값만을 선택하서 출력이 가능합니다.

[root@zzang911 /]# ls -al | awk '{print $1 $5 $9}'

drwxrwx--- 4096 root/
drwxr-xr-x 4096 sbin/
drwxr-xr-x 4096 temp/
drwxr-xr-x 4096 tftpboot/
drwxrwxrwt 4096 tmp/
drwxr-xr-x 4096 usr/
drwxr-xr-x 4096 var/

위와 같이 1,5,9 번째 컬럼값만 출력이 되어집니다. 후후후

이밖에 awk 는 연산 기능을 가지고 있다.

# find /home/design -user design -ls | \
awk '{sum+=$7}; END {print "User design total disk use = " sum }'

User design total disk use = 86072036

이와 같이 design 권한의 파일들의 크기를 합친값을 보여준다.

이 명령라인은 find 로 검색한 파일을 ls -al 형식으로 출력한후 여기서
바이트 수를 가지고 있는 7번째 열의 합계를 누적한다. 그리고 마지막줄
에 최종 결과값을 출력한다. 이밖에 awk 는 평균값도 구할수 있는데...
END 절의 sum 를 sum/NR 로 대체하면 구할수 있다. NR 은 awk 내부 변수
로서 현재까지의 입력 라인수를 갖는다.

3. 시스템 관리 명령 [3] - find

find 명령어는 시스템 관리 명령중 가장 많이 사용되는 명령어 중 하나이다.
이 명령어의 다양한 기능을 많이 알수록 관리자의 불필요한 삽질을 최대한 줄일수
있을것이다.

option :

-atime n : 정확히 n 일 전에 access 된 파일
-mtime n : 정확히 n 일 전에 수정된 파일
-newer [file] : file 보다 최근에 수정된 파일
-size n : 정확히 n x 512 byte 의 길이를 갖는 파일
-type c : 파일의 종류를 기술. f: 파일 d: 디렉토리
-fstype [filesystem] : 파일 시스템 종류
-name [pattern] : 파일 이름 검색
-perm p : 파일 접근 퍼미션이 p 인 경우
-user [user] : 파일 소유권이 user 인 파일
-group [group] : 파일 그룹이 group 인 파일
-nouser : 파일 소유자가 /etc/passwd 에 없는 경우
-nogroup : 파일 소유그룹이 /etc/group 에 없는 경우
-uid n : 파일 uid 가 n 인 경우
-gid n : 파일 gid 가 n 인 경우


단순히 위의 옵션되로 사용하면 그렇게 유용해 보이지 않을수 있겠죠.
예를 들어 누가 정확히 3일전에 접근한 파일들을 검색하겠습니까..?
하지만 +, - 기호를 이용하여 기간,시간,크기와 같은 수치들의 범위를
지정할수가 있습니다.
+ 는 ~~보다 큰 경우, - 는 ~~ 보다 작은 경우

-mtime +7 : 수정 된지 7일이 지난 파일
-mtime -7 : 수정 된지 7일이 안된 파일
-size +100 : 50kbyte 보다 큰 파일

-name 뒤엔 인용부호 (와일드 카드 문자) 를 같이 사용할수 있다.

-name *.dat : 확장자가 dat 인 모든 파일

이런 옵션들을 차례로 기술하여 파일을 찾을 경우 AND 연산이 적용된다.
하지만 -o 옵션을 이용하여 OR 을 적용할수도 있고 ( ) 를 이용하여 그
룹을 지어 적용할수도 있다. 이밖에 NOT 연산도 가능한데 옵션 앞에 !
부호를 달아 주면 된다. 밑의 몇가지 예를 살펴 보자.

# find ./ -atime +60 -mtime 120
( AND 논리연산으로 접근한지 60일 지난 파일중 수정한지 120 일 지난 파일 )

# find ./ \( -user design -o -group design \)
(OR 논리연산으로 소유자나 그룹이 design 인경우 )

# find ./ \( ! -user design -o ! -group design \)
(NOT 논리연산으로 소유자나 그룹이 design 이 아닌 경우 )

-perm 옵션은 숫자형태의 특정 접근 모드를 이용하여 파일을 검색하는 옵션이다.
옵션별 사용예를 들어 보자.

-perm 75 : permission = 755
-perm -002 : 모든 사람들이 기록할수 있는 파일
-perm -4000 : SUID 액세스 설정
-perm -2000 : SGID 액세스 설정

이밖에 지원 되는 내부 옵션이 있다.

-print : 대응되는 파일의 경로명을 출력
-ls : 대응되는 파일에 대한 긴 디렉토리 목록을 출력
-exec commands : 대응대는 파일에 대해 commands 명령 수행
-ok commands : 파일에 대한 commands 명령 수행전에 입력 대기 상태
-xdev : 검색 시작 디렉토리가 속해 있는 파일 시스템에 대해서만 검색 제한
-mount : IRIX 와 SCO UNIX 에서 -xdev 옵션
-prune : 서브 디렉토리는 검색을 하지 않음

-print 옵션은 근래는 기본으로 들어간다. 굳이 붙일 필요는 없고, -exec, -ok
옵션 사용시에는 반드시 마지막에 \; 으로 구문을 마감해야 한다.

예를 들어서 find 로 검색한 파일을 지우기 위해서는 다음과 같이 한다.

# find ./ -name *.* -exec rm -f {} \;

이와 같이 find 명령어를 이용한 시스템 관리 방법 예를 몇가지 들어 보겠다.

1. 파일 크기가10M 이상이며 한달 이상동안 수정되지 않은 파일을 찾는다.
# find / -type f -size +20480 -mtime +30 -ls
# find / -type f -size +20480 -mtime +30 -exec rm -f {} \;
(대응되는 파일삭제)

2. 보안에 관련된 팁이다. 모든 setuid, setgid 를 검색한다.
# find / -type f \( -perm -4000 -o -perm -2000 \)
# find / -type f \( -perm -4000 -o -perm -2000 \) | diff - setuidlist
(찾아된 setuid,setgid를 기존에 작성한 목록과 비교하여 새로 추가 된것이 있는지
를 확인한다. )




단순히 이와 같은 명령어들을 달달 외운다고 해서 시스템 관리를 잘하는것은 아니다.
하지만 시스템 관리자로써의 유연성과 독창성을 가지기 위해서는 위의 명령어 숙달은
필수라고 할수 있을것이다.
이제 어떤 작업이든간의 여러분이 생각하는 방법으로 보다 빠르고 정확한 검색과 결
과를 얻을수 있을거라 생각이 되네요.그럼..이만.
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/05 17:38 2008/04/05 17:38
http://cafeall.com/trackback/397

이번 서버에 네임서버 셋팅할때 일어난 일....

분명 네임서버 셋팅에 틀린부분은 없는데 어떨땐 홈페이지 접속이 되고 어떨땐 안되고....
거참....공유기 사용시 옆자리 컴에서는 접속되고 난 안되고.....
이론~~~~;;

몇일동안 고민하다가 아무래도 2차 네임서버 문제일듯 싶은 생각이 불현듯 들었다.
하여 서버호스팅업체에 전화문의......

결론은.....

우리가 도메인 신청시 1차,2차 네임서버의 정보를 적는다.
요즘은 2차까지 안적으면 신청이 안되는 곳이 제법있다.
하여 서버한대에 네임서버,웹서버를 돌리는 나로선 1차는 나의 네임서버 정보를 2차는
호스팅업체 네임서버의 정보를 적었다...

근데 예전 서버의 IP정보를 호스팅업체의 네임서버가 가지고 있어서 어떨땐 1차네임서버로 질의가
들어와서 싸이트 접속이되고....어떨땐 2차네임서버로 질의가 들어와서 예전 서버 IP를 주니 접속이 안되고.

뭐...이런 시츄에이션이였다....

근데 1차로 먼저 질의가 들어가서 당연히 100% 싸이트 접속이 되어야하는데......
1차가 응답이 없으면 2차로 질의하는것이 아니고 랜덤하게 1차나 2차중 아무데나 질의가 들어간다고...

랜덤은 스타크래프트에서나 있는줄 알았는뎅.....

다 알고 있는데 혹 나만 몰랐나????

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/04 16:29 2008/04/04 16:29
http://cafeall.com/trackback/396
겔롱:리눅스와 Rc 전동비행기 그리고 지극히 개인적인 공간, 오토캠핑 이야기
리눅스와 Rc 전동비행기 그리고 지극히 개인적인 공간, 오토캠핑 이야기
전체 (494)
Linux (38)
Rc 이야기 (32)
오토캠핑 (60)
여행&소풍 (79)
나의 이야기 (275)
마눌님 이야기 (0)
겔롱이 궁금하신분 (1)
동영상 (3)
사진이야기 (5)
«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29