2011년 12월 26일 월요일

Linux 파일시스템 복구

하드디스크 복구

일단, 싱글모드로 부팅하신후에..
e2fsck /dev/hda1
사용법은 위와 같습니다. 복구하고자 하는 파티션을 적어주면 되죠..
주의할점은, 싱글모드로 부팅해서 언마운트가 된 상황에서 복구해줘야 합니다..

싱글모드로의 부팅은 처음 부팅시
boot : linux 1
리눅스 파일시스템 점검및 복구를 할 수 있는 명령어입니다.
리눅스 시스템이 부팅되는 과정에서 /etc/rc.d/rc.sysinit 스크립트가 자동
으로 실행이 됩니다.
/etc/rc.d/rc.sysinit 스크립트를 확인해 보시면 파일시스템을 점검하는 명
령어가 실행되는 단계가 있습니다. 따라서 시스템부팅시마다 파일시스템
점검명령어가 실행됩니다.
e2fsck 의 종료코드
0 - 에러없이 정상적인 종료를 의미함.
1 - 파일시스템을 복구하였음을 의미함.
2 - 파일시스템이 복구되어 시스템이 재부팅되어야함을 의미함.
4 - 작업대상 파일시스템에 문제가 있으나 복구하지않고 그대로 두었
음을 의미함.
8 - 실행에러를 의미함.
16 - 사용법(Usage)또는 문법(Syntax)에러를 의미함.
32 - e2fsck 작업이 사용자에 의해서 취소(Cancel)되었음을 의미함.
128 - 공유 라이브러리(Shared library) 에러를 의미함.
[주의사항]e2fsck 명령어로 파일시스템을 점검하고 복구할 때에는 대상 파일시스템이 마운트되어있지않은 상태에서 실행하시기 바랍니다. 만약 마운트되어있는 상태에서 이 명령어를 사용하신다면 원하지않은 오류를 발생할 수도 있습니다.
마운트된 파일시스템을 e2fsck 로 점검 할때는 "WARNING!!!" 메세지가 나온다~
사용하기전에 파일시스템 정보부터 확인한다.
-----------------------------------------------------------------------------------
[root@dg69 /]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 4957220 2726600 1978804 58% /
/dev/sdb1 17654736 2672588 14085324 16% /backup
/dev/sda1 101086 17979 77888 19% /boot
none 517292 0 517292 0% /dev/shm
/dev/sda5 11084636 178904 10342656 2% /home
------------------------------------------------------------------------------------
[root@dg69 /]# mount/dev/sda2 on / type ext3 (rw)
none on /proc type proc (rw)
none on /sys type sysfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/sdb1 on /backup type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/sda5 on /home type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/proc on /var/named/chroot/proc type none (rw,bind)
------------------------------------------------------------------------------------
[root@dg69 /]# fdisk /dev/sdb
The number of cylinders for this disk is set to 2233.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sdb: 18.3 GB, 18373206016 bytes
255 heads, 63 sectors/track, 2233 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 2233 17936541 83 Linux
Command (m for help): q
------------------------------------------------------------------------------------
[root@dg69 /]# fdisk /dev/sda
The number of cylinders for this disk is set to 2233.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sda: 18.3 GB, 18373206016 bytes
255 heads, 63 sectors/track, 2233 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 640 5036377+ 83 Linux
/dev/sda3 641 831 1534207+ 82 Linux swap
/dev/sda4 832 2233 11261565 5 Extended
/dev/sda5 832 2233 11261533+ 83 Linux
Command (m for help): q
[root@dg69 /]# cat /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/ / ext3 defaults 1 1
LABEL=/backup1 /backup ext3 defaults 1 2
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
LABEL=/home1 /home ext3 defaults 1 2
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
LABEL=SWAP-sda3 swap swap defaults 0 0
/dev/hda /media/cdrom auto pamconsole,exec,noauto,managed 0 0
/dev/fd0 /media/floppy auto pamconsole,exec,noauto,managed 0 0
[root@dg69 /]#
------------------------------------------------------------------------------------
e2fsck 사용법
------------------------------------------------------------------------------------
[root@dg69 /]# e2fsck /dev/sdb1 <-----일반적인 특정시스템 점검복구e2fsck 1.35 (28-Feb-2004)
/dev/sdb1 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? yes
/backup1: clean, 62/2244608 files, 738598/4484135 blocks
------------------------------------------------------------------------------------
[root@dg69 /]# e2fsck -f /dev/sdb1 <-----강제적인 특정시스템 점검복구
e2fsck 1.35 (28-Feb-2004)
/dev/sdb1 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? yes
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/backup1: 62/2244608 files (16.1% non-contiguous), 738598/4484135 blocks
------------------------------------------------------------------------------------
[root@dg69 /]# e2fsck -j ext3 /dev/sdb1 <-----ext3(저널링)파일시스템 점검복구
e2fsck 1.35 (28-Feb-2004)
/dev/sdb1 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? yes
/backup1: clean, 62/2244608 files, 738598/4484135 blocks
--------------------------------------------------------------------------------------
[root@dg69 /]# e2fsck -fv /dev/sdb1 <-----강제적인 특정시스템 점검복구및 상세정보출력
e2fsck 1.35 (28-Feb-2004)
/dev/sdb1 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? yes
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
62 inodes used (0%)
10 non-contiguous inodes (16.1%)
# of inodes with ind/dind/tind blocks: 27/17/0
738598 blocks used (16%)
0 bad blocks
1 large file
43 regular files
10 directories
0 character device files
0 block device files
0 fifos
0 links
0 symbolic links (0 fast symbolic links)
0 sockets
--------
53 files
-----------------------------------------------------------------------------------------
*점검 복구 자동 : e2fsck -p /dev/sdb1
*점검,복구시 묻는질문에 무조건 yes : e2fsck -y /dev/sdb1
*점검,복구시 묻는질문에 무조건 no : e2fsck -n /dev/sdb1
*버퍼캐쉬의 내용을 디스크에 저장하기 : e2fsck -F /dev/sdb1
파일시스템의 수퍼블록을 이용한 파일시스템 복구방법
리눅스의 파일시스템은 블록그룹(Block Group)이라는 것으로 기본구조를 이
루고 있으며 모든 블록그룹의 맨 앞에는 수퍼블록이라는 것이 존재합니
다. 블록그룹에 존재하는 모든 수퍼블록들은 동일한 정보를 가지고 있으
며 파일시스템이 파괴되었을 경우에 이 정보를 이용하여 복구를 할 수 있도
록 준비하고 있습니다.
- 첫번째 수퍼블록 : 1 번블록에 위치함.
- 두번째 수퍼블록 : 1 번블록 + 8192 번블록*1 = 8193 번째 블록에 위치함.
- 세번째 수퍼블록 : 1 번블록 + 8192 번블록*2 = 16385 번째 블록에 위치함.
- n 번째 수퍼블록 : 1 번블록 + 8192 번블록*n 번째블록에 위치함.
ex) 첫번째 수퍼블록이 깨졌기 때문에 일반적인 방법으로 복구가 불가능하게 된 경우로서 두번째 수퍼블록으로 복구를 하는 예
----------------------------------------------------------------------------------------
[root@file root]# e2fsck -b 8193 /dev/sda1
e2fsck 1.32 (09-Nov-2002)
/dev/sda1 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? yes
/boot was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/boot: ***** FILE SYSTEM WAS MODIFIED *****
-------------------------------------------------------------------------------------------
세번째 수퍼블록을 이용한 복구작업 : # e2fsck -b 16385 /dev/sda1
네번째 수퍼블록을 이용한 복구작업 : # e2fsck -b 24577 /dev/sda1 으로 하시던지, 부팅후에 init 1 으로 레벨을 변경하실수가 있습니다..

2011년 12월 25일 일요일

FTP 226 Transfer done (but failed to open directory). 오류해결방법 ...‎

Fedora Core9에 vsftp를 설치하여 사용하다 보면 외부에서 FTP 접속할 경우
아래  표와 같이 디렉토리 목록만 나오고 파일목록이 안나오는 경우가 있다.

230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).


이럴 경우 "root" 권한으로

SELinux 정책을 일시적으로 끄고 싶을때 (재부팅하면 SELinux의 정책은 원래대로 돌아온다.)
# setenforce 0
다시 켜고 싶을땐
# setenforce 1

영구적으로 SELinux정책을 끄고 싶을때는 아래와 같이 해주면 된다.(이것도 역시 root 권한으로...)
#vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted

위와 같이 "SELINUX="의 값을 "enforcing"에서 "disabled"로 수정 후 저장하면 재부팅 후에도... 쭈욱~ 

출처 : http://mrtroll.tistory.com/entry/%ED%8E%98%EB%8F%84%EB%9D%BC%EC%BD%94%EC%96%B4%EC%97%90%EC%84%9C-SELINUX-%EA%B4%80%EB%A0%A8-%EC%84%A4%EC%A0%95FTP%EA%B4%80%EB%A0%A8

페도라코어에서 SELINUX 관련 설정(FTP관련)

*** SELINUX
# setsebool -P ftp_home_dir 1
페도라 코어 4 까실때 SELinux 로 설정했다면 디폴트로 사용자의 home 디렉토리에 쓰기를 막아놓는다.
SELinux 설정에서 FTP 부분을 변경하자.
# service vsftpd restart
home 디렉토리의 읽고쓰기를 1(True)로 변경하시고 vsftpd 를 재시작.

# setsebool -P ftpd_disable_trans 1
FTP 에 관하여 SELinux 정책을 아예 적용하지 않는 옵션을 설정


- 근데 왜 내꺼에선 setsebool -P ftp_home_dir 1 명령어 입력후 먹통일까... -ㅅ-

selinux disable

1. 수동으로 끄기 (일시적으로만 먹힘)
system-config-securitylevel
setenforce 0

2. 커널 명령행에 다음 옵션 추가. (grub.conf 등에)
selinux=0

3. /etc/selinux/config 파일 수정 ***추천***
SELINUX=어쩌구~ 써있는 것을 SELINUX=disabled로 수정

 

2011년 12월 21일 수요일

제로보드XE upload 2MB 제한

문제: XE에서 upload 2MB 제한되어 있으며, 관리자메뉴에서 설정을 바꿔도 변경되지 않는다.
          이는 apache의 php.ini 파일의 설정때문이다.

해결:/usr/local/apache/conf/php.ini 파일의 upload_max_filesize와 post_max_size를 수정후
        apache를 재실행 하면 된다.
        XE 관리페이지에서는 별다른 설정이 필요없다.

2011년 12월 19일 월요일

mysql시작하기

- MySQL 활성화
echo 'mysql_enable="YES"' >> /etc/rc.conf
- MySQL 설정
cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf

UTF-8로 설정
# vi /etc/my.cnf
--------------------------------------------------------------------------------
[client]
default-character-set=utf8

[mysqld]
character-set-client-handshake=FALSE
init_connect="SET collation_connection=utf8_general_ci"
init_connect="SET NAMES utf8"
#default-character-set=utf8 => MySQL 5.0이면 이 부분 추가
character-set-server=utf8
collation-server=utf8_general_ci

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8
-----------------------------------------------------


- MySQL 시작
/usr/local/etc/rc.d/mysql-server start

- MySQL 루트 패스워드 지정
mysql> set password for 'root'@'localhost' = password('비밀번호');
mysql> grant all on *.* to root@localhost identified by '비밀번호';
mysql> UPDATE mysql.user SET Password = PASSWORD('비밀번호') WHERE User = 'root';
mysql> flush privileges;

- MySQL 루트 패스워드 지정 방법 2
/usr/local/bin/mysqladmin -u root password 비밀번호

- 외부 접속 가능
mysql> grant all privileges on *.* to root@"%" identified by '비밀번호' with grant option;

- 외부 접속 가능 방법 2
mysql -h localhost -u root -p
mysql> grant all privileges on *.* to 'root'@'%' identified by '비밀번호';
mysql> grant reload,process on *.* to root@localhost;
FLUSH PRIVILEGES;

XE설치시 퍼미션불가능 이라는 에러발생.

문제: XE설치시 약관동의후 다음페이지에서 퍼미션 불가능 이라고 뜰때.
해결:htdocs 디렉토리 혹은 XE설치디렉토리의 퍼미션확인
        755 --> 707

XE설치 화면이 표시되지 않을때.

문제: APM설치후 httpd 실행후 웹서버에 접속하면
        http://xxx.xxxx.xxx.xxx/ ---> 파일내용만 보임.
        http://xxx.xxxx.xxx.xxx/index.php --> XE첫화면만 보이며 약관동의후 다음페이지로 넘어가면
        페이지가 표시되지 않음.

 해결:/usr/local/apache/conf/httpd.conf파일 수정
        DirectoryIndex --> index.php추가해줌.

2011년 12월 14일 수요일

아파치 403에러 Permission Denied access to / denied 초치법

아파치 설정후 기본 index.html화면은 뜨는데 사용자 원하는 화면이 안뜰때.
1.httpd log확인(/var/log/httpd/error.log)
2.Permission Denied access to / denied  메시지가 있다면 아래와 같이 조치한다.
3.# chcon -R -h -t httpd_sys_content_t /home/www

/home/www는 원하는 폴더를 지정하면 된다.

2011년 12월 7일 수요일

windows에서 samba에 다른 계정으로 로그인 하기.

상식적으로 생각해 볼 때 당연히 쉽게 되어야 할 것 같지만, 공유폴더에 어떤 계정으로 자동로그인을 걸어 버리면 그걸 풀기가 정말정말정말 힘듭니다. 아니 대체 어떻게 하면 풀 수 있는지 알 수가 없더군요. 연구실에서 제가 관리하는 머신에 삼바를 깔았는데, 다른 사람 계정으로 자동로그인해 버렸더니 제 계정으로 접근할 수가 없어서 몇 달 정도 사용을 못하고 묵혀 두고 있었답니다.

오늘 마음먹고 찾아봤더니.. 가능하더군요. net use 명령을 쓰면 됩니다 ;


C:\>net use
새 연결 정보가 저장됩니다.

상태 로컬 원격 네트워크
-------------------------------------------------------------------------------
OK Z: \\192.168.0.40\sjlee Microsoft Windows Network
OK \\147.46.11x.13x\IPC$ Microsoft Windows Network
OK \\147.46.12x.12x\IPC$ Microsoft Windows Network
명령을 잘 실행했습니다.


현재 연결된 공유폴더 목록을 볼 수 있습니다. 여기서, 로그인 계정을 변경하고자 하는 머신으로의 모든 연결을 수동으로 끊어 줘야 합니다.


C:\>net use \\147.46.12x.12x\IPC$ /delete
\\147.46.12x.12x\IPC$이(가) 제거되었습니다.


이제 다시 목록을 확인해 봅시다.


C:\>net use
새 연결 정보가 저장됩니다.

상태 로컬 원격 네트워크
-------------------------------------------------------------------------------
OK Z: \\192.168.0.40\sjlee Microsoft Windows Network
OK \\147.46.114.135\IPC$ Microsoft Windows Network
명령을 잘 실행했습니다.


확실히 끊어졌지요. 이제 다시 연결해 봅시다.


C:\>net use \\147.46.12x.12x * /user:sjlee
\\147.46.12x.12x에 대한 암호를 입력하십시오:
명령을 잘 실행했습니다.

C:\>net use
새 연결 정보가 저장됩니다.

상태 로컬 원격 네트워크
-------------------------------------------------------------------------------
OK Z: \\192.168.0.40\sjlee Microsoft Windows Network
OK \\147.46.11x.13x\IPC$ Microsoft Windows Network
OK \\147.46.12x.12x\IPC$ Microsoft Windows Network
명령을 잘 실행했습니다.

C:\>
 
 
 
=========================================================================================================================
=========================================================================================================================


http://www.cyworld.com/moonriver_13/3781673

처음 PC 전원 킨 후 네트워크 공유 폴더에 암호가 걸려있을 경우 '사용자 이름'과 '암호'를 넣게 되어 있다.
한번 로그인 되면 다시 부팅 되기 전까진 자동으로 들어가게 되어 있다.

여기서 문제는 공유폴더가 여러개이며 각각의 공유폴더마다 다른 계정으로 로그인 하게 되어 있다면
해결은 재부팅이었다.(몰랐기 때문에 ㅠㅠ)

[재부팅 없이 로그인된 계정을 로그오프 한후 다른 계정으로 로그인하는 방법]
1. 연결정보 확인하기 (예시문)
 ※net use 명령어 사용하기 - 명령어를 사용하기 위해서는 도스창을 띄워야 함
    (도스창을 열기위해서는 시작-실행-열기란에 'cmd')

================검정색의 도스창===시작================================================
C:\>net use새 연결 정보가 저장됩니다.

상태          로컬          원격                               네트워크
-------------------------------------------------------------------------------
OK                           \\147.46.11x.13x\IPC$   Microsoft Windows Network
OK                           \\147.46.12x.12x\IPC$   Microsoft Windows Network
명령을 잘 실행했습니다.
================검정색의 도스창===끝==================================================코멘트: 현재 연결된 공유폴더 2개 목록을 볼 수 있습니다. (주의:예시이므로 각 사용자는 다를 수 있음)

2.수동으로 연결끊기
================검정색의 도스창===시작================================================C:\>net use \\147.46.12x.12x\IPC$ /delete
\\147.46.12x.12x\IPC$이(가) 제거되었습니다.
================검정색의 도스창===끝==================================================

코멘트: 로그인 계정을 변경하고자 하는 머신으로의 모든 연결을 수동으로 끊어 줘야 함.

3. 연결정보 재확인
================검정색의 도스창===시작================================================
C:\>net use
새 연결 정보가 저장됩니다.

상태          로컬          원격                               네트워크
-------------------------------------------------------------------------------
OK                           \\147.46.11x.13x\IPC$   Microsoft Windows Network
명령을 잘 실행했습니다.
================검정색의 도스창===끝==================================================

RHEL_AS4 samba servre setting.

1.samba pkg확인.
rpm -qa |grep samba

2.samba pkg install.
rpm -ivh |grep sambaxxx.rpm

3.samba service 등록.
  ntsysv

4.samba user 생성 및 pw변경.
  smbpasswd -a "smbuser"
  smbpasswd smbuser
 *.samba password생성을 위해서는 해당유저가 linux system에 생성되어 있어야함.
5.설정파일/etc/samba/smb.conf 수정.

5.smb service start
  service smb start


RHEL_AS4 vnc server setting.

1.vnc pkg설치확인
   rpm -qa |grep vnc
2.vnc pkg설치.
  rpm -ivh xxxx.rpm
3.vnc service 설정.
  ntsysv

우선 여기까지 설정후 테스트 해보고 안되면 아래 절차대로 진행.
****STEP1. On the system you want to control with VNC, run the program vncpasswd as root to set a VNC password. You will use this password when connecting with vncviewer or another VNC remote control program.

****STEP2. Edit the file /etc/X11/xorg.conf on RHEL 5

[A] Create the section called Module in the end of the file and add following lines:
Section "Module"
Load "glx"
Load "dbe"
Load "extmod"
Load "freetype"
Load "type1"
Load "dri"
Load "vnc"
EndSection
Make sure this is on a new line before EndSection.

[B] In section called Screen, add this line:
Option "passwordFile" "/root/.vnc/passwd"

Make sure this is on a new line before EndSection.


****STEP3 – Allow the ports in Firewall

1. SSH to the server and Run the following tool:
2. # system-config-securitylevel
3. In the "Other ports", please add a range as in below example. Note that those will be TCP ports as below:

5900-5904:tcp

4. Save and close the tool then restart firewall:
# service iptables restart

****STEP4: Make sure using chkconfig that vncserver is enabled for level 2,3,4,5. Then RESTART the machine.

Note: If you suspect the firewall blocking, then disable the firewall altogether and test VNC if it works. I use tightVNC to test.

VNC will typically use port 59xx, where "xx" is the console number. Use the command netstat -na | less to see the ports that are open on the system. Look in the 5xxx range for VNC.

2011년 11월 21일 월요일

LINUX system backup

dump -0f /dev/st0 /

1.
백업에 대하여
백업은 자료를 보호하는 하나의 방법으로 시스템관리자가 최우선적으로 해야할 작업이다. 여러 개의
자료 복사본을 만들어 놓고 자료를 잃어버릴 경우를 대비하는 것이다. 백업을 실행하는 가장 안전한
방법은 테이프, 제거가능한 드라이브, 기록가능한 씨디 시스템과 떨어진 위치에 저장하는 것이다.


2.
자료가 손실되는 경우
(1)
하드웨어의 결함
(2)
소프트웨어의 버그
(3)
사람의 실수나 오동작
(4)
천재지변등의 자연재해

3.
백업전에 고려할 사항
(1)
백업 데이터 선택 여부 : 어떠한 데이터를 백업할 지를 결정해야 한다. 예를 들면 /home 디렉토
리만을 백업할 것인지, /var 디렉토리를 것인지 아니면 전체 백업을
것인지를 결정해야 한다.
(2)
백업 주기 : 얼마나 자주 백업할 것인지를 결정해야 한다. 또한 증분백업(Incremental Backup) 것인지, 전체백업(Full Backup) 것인지도 결정해야 한다. 증분백업이란
그대로 백업할 대상중에서 추가된 부분만을 백업하는 것을 말하고 전체백업이란
전체를 그대로 백업하는 것을 말한다. 실제로는 두가지 백업형태를 적절히 이용
하는 것이 중요하다. 예를 들면 월요일부터 토요일까지는 추가된 부분만을 증분백
업하고, 일요일날에는 전체백업을 실시한다. 또한 매월 1일에는 전체백업을 실시하
한달의 데이터, 1주의 데이터 등의 단위로 백업이 가능하다.
(3)
매체(Media) 선택 여부: 어떠한 백업 매체를 사용할 것인지를 결정해야 한다. 매체 선택은
경제적인 면과 효율적인 , 편리성 등을 고려하여 선택한다.
(4)
백업 방법: 어떠한 프로그램을 선택하냐는 것이다. 리눅스에서 사용가능한 백업방법으로는 tar,
dd, dump, dpio
등이 있고, 이외에도 많은 백업 유틸리티들이 있다. 편리성과 안전성
,
효율성 등을 고려하려 선택하도록 한다.

4.
백업의 미디어
(1)
개요: 백업할 경우 가장 중요하게 고려하는 것이 예비 매체의 선택이다. 비용, 신뢰성, 처리속
, 가용도를 생각해야 한다.
(2)
백업매체
1)
플로피디스크: 매우 싸며 어느 정도 신뢰할 만하다. 하지만 별로 빠르지 못하고 매우 유동적
이다. 또한 대용량의 데이터 저장시에는 적당치 않다.
2)
테이프: 다소 비싸고 충분히 신뢰할 만하다. 속도도 충분히 빠르다. 테이프의 크기에 따라 편리하게 이용할 있다.
3) MOD(Magnetic Optical Drive:
광자기 드라이브) : 대용량의 데이터를 랜덤하게 접근하고
부분만 빨리 복원할 있다. Giga급의 용량
가진다.
4) DAT(Digital Audio Tape) :
카세트 테이브보다 작은 크기의 미디어로 Giga 용량을
는다.

5.
리눅스에서 지원가능한 백업장치
(1) /dev/cdrom: CD-ROM
드라이브
(2) /dev/fd0:
플로피디스크
(3) /dev/ht0, /dev/nht0 : IDE
테이프 장치 (예를 들면 Iomega drives)
(4) /dev/nst0, /dev/st0 : DAT(Digital Audio Tape)
DDS(Digital Data Storage) 계열의 SCSI 테이프 장치
(5) /dev/nrft0, /dev/nftape, /dev/rft0, /dev/ftape :
플로피 테이프 장치 (예를 들면 QIC-80)

6.
백업툴의 선택

(1)
개요: 전통적인 유닉스툴들에는 tar, dd, cpio, dump등이 있다. tar cpio 유사하고
테이프상에서 복원할 있고, 거의 모든 미디어를 사용할 있다.
(2)
백업툴
1) tar: Unix
리눅스시스템 모두에서 사용되는 유틸리티로 파일이나 디렉토리들을 하나의 파일
묶어주는 역할을 한다. 사용이 쉽고 소수의 파일백업에 좋고, 원본파일을 남겨두므로
안전하다. 전통적인 유닉스의 tar 압축기능을 하는 옵션이 없지만, 리눅스의 GNU tar
압축도 지원한다.
2) cpio: tar
비슷한 유틸리티로 많은 양의 데이터에 대해서는 tar보다 빠르다. 장치파일이나
네트워크 파일등의 특수 파일도 백업이 가능하고 백업본의 크기도 작고, 백업본에 손상된
부분이 있더라도 손상된 부분을 제외하고 나머지 부분을 복구한다. 그러나, 증분백업기능
지원하지 않는다.
3) dump: ext2
ext3 파일시스템만 지원하고, 파일들을 백업하지않고 파일시스템 자체를 직접 읽어내는 방법을 사용한다. 전체백업과 증분백업이 가능하다.
4) dd : data dump
약자로 파티션 전체의 백업등이 가능하다. 실제적으로는 백업보다는 다른
우에 더욱 많이 쓰인다.
5)
기타: amanda, Arkeia, Bru, Veritas(client), UniBACK, ArcServe

7. tar
이용하여 백업하기
(1)
전체백업
1) tar cvfp home.tar /home
=> /home
디렉토리를 퍼미션을 그대로 유지하면서 home.tar라는 파일로 묶는다.
2) tar cf /dev/st0 /home
=> /home
디렉토리를 SCSI 테이프장치인 /dev/st0 백업한다.
3) tar zcf /dev/st0 /home
=> /home
디렉토리를 SCSI 테이프장치인 /dev/st0 압축해서 백업한다.
4) tar zxf /dev/st0
=> SCSI
테이프장치인 /dev/st0 에서 압축을 풀어 현재 디렉토리에 푼다.
5) tar -g list -cvpf home.tar /home
=> -g
증분백업(Increment backup) 사용하는 옵션으로 /home 디렉토리를 퍼미션을 그대로
유지하면서 home.tar 묶는 것은 1 예제와 같지만 list라는 백업시에 저장되는 파일이나
디렉토리들을 목록화하는 파일을 생성한다. 처음시도할 경우에는 첫번째 예제와 같은 파일
생성된다. 그러나 다음 시도시에는 list파일과 비교하여 추가된 것만 백업하므로
업하여 생성되는 파일명을 같게 해서는 안된다.
(2)
증분백업
1) tar -g list -cvpf home1.tar /home
=>
기존의 list파일을 내용을 보고 이후에 변경되거나 추가된 파일들을 home1.tar 백업
한다. list파일을 편집기로 열어보면 파일의 용량을 숫자로 관리한다. 값을 비교하여 변화시에 증분백업을 시도한다. 따라서, 파일을 삭제되면 전체백업을 한다.

8. cpio
이용하여 백업하기
(1)
설명: cpio Copy Input ot Output 약자로 입력받은 것을 출력에 복사한다는 뜻이다. 보통
find
명령의 출력을 입력으로 받아 백업디바이스에 저장하는 역할을 한다.
(2)
사용법
[find
명령 | ] cpio options ' > 또는 < ' 디바이스명
(3) options
-o :
표준출력으로 보내어 사용한다. (--extract)
-i :
표준입력으로 받을 사용한다. , 백업한 자료를 불러올 사용한다.
-v :
과정을 자세히 보여준다.
-c :
데이터 형식을 ASCII형태로 한다.
-d :
필요하면 디렉토리를 생성한다. (--make-directories)
-B :
입출력 블록사이즈를 5120bytes 한다. 기본 블록사이즈는 512bytes이다.
(4)
사용예
1) find /home | cpio -ocv > /dev/nst0
=> /home
디렉토리의 내용을 SCSI 테이프장치인 /dev/nst0 장치에 백업한다.
2) cpio -icdv < /dev/nst0
=> /dev/nst0
백업된 데이터를 현재디렉토리에 복원한다. 필요하면 디렉토리도 생성한다.

9. dump
이용하여 백업하기
(1)
설명: dump 파일들이 아닌 파일시스템 전체를 백업한다. 보통 파티션단위로 백업할 사용
하면 편리하다. dump 0-9단계의 레벨을 가지고 증분 백업을 지원한다. 레벨 0 전체
백업이고 나머지 레벨들은 부분백업을 하게 된다. 백업시에 /etc/fstab파일을 참조하며 백업된 데이터 복원은 restore명령을 사용한다.
(2)
사용법
dump options
백업미디어 백업하고자하는 대상
(3) options
-0~9 :
덤프의 레벨을 지정한다. 0 전체백업이고, 나머지는 부분백업을 한다. 기본레벨은 9
.
-f
파일명 또는 디바이스명 : 백업할 미디어를 지정하거나 파일명을 적는다.
-u : dump
통해 백업한 후에 /etc/dumpdates라는 파일에 작업에 대한 정보를 기록한다.
(4)
사용예
1) dump -0f /dev/nst0 /home
=> /home
디렉토리 전체를 /dev/nst0 장치에 전체 백업한다.
2) dump -0u -f /dev/nst0 /dev/hda7
=> /dev/hda7
파일시스템 전체를 /dev/nst0 장치에 전체 백업하며 작업 정보를 /etc/dumpd
ates
라는 파일에 기록한다.
3) dump -0u -f home /home
=> /home
디렉토리 전체를 home이라는 이름으로 전체백업한다. 또한 작업정보를 /etc/dump
dates
라는 파일에 기록한다.
4) dump -4u -f /dev/nst0 /dev/hda7
=> level4
수준 또는 이하의 백업을 뒤에 바뀐 내용을 증분백업한다. 또한 작업정보
/etc/dumpupdates 기록한다.
(5)
복원: dump명령으로 백업한 경우에는 restore 명령을 이용하여 복원해야 한다.
1)
사용법
restore options
디바이스명 또는 백업파일명
2) options
-i :
대화식(interactive)으로 복구할 파일을 선택한 후에 복원이 가능하다.
-f
디바이스명 또는 백업파일명 : 백업되어진 파일이나 장치를 지정한다.
-r :
전체백업시에 사용한다. 옵션사용시에 파일시스템이 미리 생성되어 있어야 하고, 마운트
되어 있어야 하며 해당 디렉토리안에서 작업해야 한다.
3)
사용예
. restore -if /dev/st0
=> /dev/st0
백업된 데이터를 하나씩 확인하면서 복원한다.. restore -rf /dev/nst0
=> /dev/nst0
백업된 데이터를 전체복원한다. 복원하고자 하는 파일시스템이 생성되어
있어야 하며 마운트되어 있어야 하고 해당 디렉토리안에서 작업해야 한다.) mke2fs /dev/sda1
mount /dev/sda1 /mnt
cd /mnt
. restore -if home
=> home
이라는 이름으로 백업된 파일을 복구한다. 실행시키면 다음과 같이 프롬프트가 나타
난다. 지원가능한 명령을 확인해야 한다.
restore > // ?
help라고 입력하면 사용가능한 명령을 보여준다.
restore > help
Available commands are:
ls [arg] - list directory
cd arg - change directory
pwd - print current directory
add [arg] - add `arg' to list of files to be extracted
delete [arg] - delete `arg' from list of files to be extracted
extract - extract requested files
setmodes - set modes of requested directories
quit - immediately exit program
what - list dump header information
verbose - toggle verbose flag (useful with ``ls'')
prompt - toggle the prompt display
help or `?' - print this list
If no `arg' is supplied, the current directory is used
restore > ls //
백업된 내용을 보여준다.
.:
bluemountain/ minory/ nanajjang/ quota.user zzang/
lost+found/ mkk737/ posein/ xitem/
restore > add quota.user //
특정한 파일을 선택한다. add뒤에 파일명을 기입하지
않으면 전부선택된다.
restore > ls
.:
bluemountain/ minory/ nanajjang/ *quota.user zzang/
lost+found/ mkk737/ posein/ xitem/
restore > extract
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume # (none if no more volumes): 1 //
볼륨넘버를 입력한다.
set owner/mode for '.'? [yn] y // y
라고 입력한다.

10. dd
이용하여 백업하기

(1)
설명: 전체파티션 단위로 백업할 용이하다.
(2)
사용법: 특정파티션을 다른 하드디스크의 파티션으로 백업한다고 가정해보자. 만약 /dev/hda1 /dev/hdb1으로 백업한다고 , /dev/hdb1 /dev/hda1 같은 사이즈의 파티션으
생성한다.
(3)
사용예
1) dd if=/dev/hda1 of=/dev/hdb1 bs=1k
=> /dev/hda1
/dev/hdb1으로 백업한다.
2) dd if=/dev/hda of=/dev/hdb
=> /dev/hda
/dev/hdb 백업한다.

11.
백업의 종류와 복원
(1)
개요: 모든 것을 한번에 백업하는 풀백업(Full Backup) 있고 부분 부분을 백업하는 부분 백업
(Incremental Backup)
있다.
(2)
풀백업
1)
설명: tar 이용하여 쉽게 수있다.
2)
사용예 . tar cvf /dev/ftape /usr/src
=> /usr/src
디렉토리를 /dev/ftape라는 테이프에 백업한다.. tar -cMf /dev/fd0H1440 /usr/src
=> /usr/src
디렉토리를 -M(Multi Volume)옵션으로 플로피에 연속 백업한다. 백업하기 전에
플로피는 포맷을 해야 한다.
(3)
부분백업
1)
설명: 특정한 날짜 이후로 바뀐 파일 부분만 백업한다.
2)
사용예
. tar -c -v -N '15 June 2002' -f /dev/st0 /usr/src
=> /usr/src
에서 2002 6 15 이후로 변경된 파일만을 DAT 부분백업한다.
(4)
복원
1)
설명: tar x옵션을 이용하여 복원한다.
2)
사용예
tar xvf /dev/fd0H1440

12.
백업의 대상
(1)
개요: 가능한 많은 백업을 하는 것이 좋다. 그러나 쉽게 재설치가 가능한 프로그램은 백업을
하지 않을 수도 있다. 또한 시스템상의 이유로 백업을 원치않는 데이터도 있을 것이다.
들면 커널이 항상 자동으로 생성하는 데이터들은 백업할 필요가 없다. 백업을 해야할지
하지 말아야 할지 구분이 안되는 것이 /var디렉토리 이하의 파일들이다. 무엇이 중요한
가를 고려하여 백업해야 한다.
(2)
백업해야할 대상 : 보통 /home /etc( 디렉토리는 설정파일들이 들어있는 디렉토리이다.
우에 따라서는 시스템의 다른 위치에도 설정파일이 있을 수도 있으니 찾아
백업을 해야함) 해야한다. 아울어 어떤 프로그램의 소스를 /usr/local밑에 설치하였다면 디렉토리도 백업대상으로 고려해야 한다.

13.
압축백업
(1)
개요: 백업은 많은 공간을 요구하게 되는데 그것은 많은 경제적인 비용을 초래할 있다. 이러
비용적 부담의 대처방법으로 압축을 있다. 압축백업은 문제점을 발생시킬 수도 있다. 자연적으로 어떤 환경때문에 만약 하나의 비트가 잘못 되었다면 모든 나머지 데이터
사용 못하게 있다. 어떤 백업프로그램은 에러를 교정해주지만 많은 수의 에러는 어찌할 없는 경우가 많다. 백업은 안전해야 되므로 그리 좋은 생각만은 아니다.
(2)
사용예
tar zcvf etc_backup.tar.gz /etc
=> /etc
디렉토리를 압축하여 etc_backup.tar.gz파일을 만든다.

14.
테이프 관련 유틸리티- mt
(1)
설명: mt 테이프(Magnetic Tape) 작동을 제어하는 유틸리티이다.
(2)
사용법
mt [option] command
(3) option
-h :
사용가능한 command 보여준다.
-v : mt
버전을 보여준다. (--version)
-f
디바이스명: 제어하고자하는 디바이스명을 지정한다.
(4)
주요 commnad
status :
테이프의 상태를 보여준다.
fsf
파일수: 테이프를 지정한 파일 만큼 앞으로 이동시킨다.
rewind :
테이프를 처음으로 되감는다.
bsf
파일수 : 테이프를 지정한 파일 만큼 되감는다.
erase :
테이프의 내용을 지운다.
offline :
테이프를 꺼낸다.
rewoff :
테이프를 처음으로 되감은 뒤에 꺼낸다.
(5)
사용예
1) mt -f /dev/st0 status
=>
테이프의 상태를 보여준다.
2) mt -f /dev/st0 rewind
=>
테이프를 처음으로 되감는다.
3) mt -f /dev/st0 fsf 50
=>
파일 50만큼 테이프를 앞으로 이동시킨다.
4) mt -f /dev/st0 erase
=>
테이프의 내용을 지운다.
5) mt -f /dev/st0 offline
=>
테이프를 꺼낸다.
6) mt -f /dev/st0 rewoff
=>
테이프를 처음으로 되감은 꺼낸다.l