<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>강철곰도리...</title>
	<link>http://metalbear.egloos.com</link>
	<description>강철 곰도리의 시맨틱스 웹...</description>
	<language>ko</language>
	<pubDate>Sat, 03 Jan 2009 04:32:44 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>강철곰도리...</title>
		<url>http://pds.egloos.com/logo/1/200405/03/39/b0003139.jpg</url>
		<link>http://metalbear.egloos.com</link>
		<width>80</width>
		<height>80</height>
		<description>강철 곰도리의 시맨틱스 웹...</description>
	</image>
  	<item>
		<title><![CDATA[ 럭키스타 피규어들... ]]> </title>
		<link>http://metalbear.egloos.com/4029718</link>
		<guid>http://metalbear.egloos.com/4029718</guid>
		<description>
			<![CDATA[ 
  지난번에 부장님이 일본 다녀오시며 사오신...<br>(먼지도 모르고... 그냥 줏어오신게...<br>내가 부타그렸던 럭키스타.. ㅋㅋ)<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds12.egloos.com/pds/200901/03/39/b0003139_495eea638aae4.jpg" width="282" height="513" onclick="Control.Modal.openDialog(this, event, 'http://pds12.egloos.com/pds/200901/03/39/b0003139_495eea638aae4.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds11.egloos.com/pds/200901/03/39/b0003139_495eea63af94b.jpg" width="321" height="619" onclick="Control.Modal.openDialog(this, event, 'http://pds11.egloos.com/pds/200901/03/39/b0003139_495eea63af94b.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200901/03/39/b0003139_495eea6464db6.jpg" width="265" height="640" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200901/03/39/b0003139_495eea6464db6.jpg');" /></div>			 ]]> 
		</description>

		<comments>http://metalbear.egloos.com/4029718#comments</comments>
		<pubDate>Sat, 03 Jan 2009 04:32:44 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
	<item>
		<title><![CDATA[ PSP 팡야 포터블 ]]> </title>
		<link>http://metalbear.egloos.com/4029717</link>
		<guid>http://metalbear.egloos.com/4029717</guid>
		<description>
			<![CDATA[ 
  드디어 나왔다.. 3년이나 기달렸는데..<br>이거 만드느라 고생한 현쳐루.. 고생많았다...<br>ㅋㅋ 근데 어쩌냐.. 만들자마자 다음 프로젝트 준비로 바쁘니. ㅎㅎㅎ<br>머 내가 이런 소리 할 상황이 아니군.. 나 역시 마찬가지니.. -_-;<br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds12.egloos.com/pds/200901/03/39/b0003139_495ee94f7acf9.jpg" width="280" height="356" onclick="Control.Modal.openDialog(this, event, 'http://pds12.egloos.com/pds/200901/03/39/b0003139_495ee94f7acf9.jpg');" /></div>받은건 24일밤... 현처리를 꼬셔서 직원가로 구입 ㅎㅎㅎ<br>(그래도 하나에 7만원이 넘는군. ㅜ_ㅜ)<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9c83c53e.jpg" width="250" height="259" onclick="Control.Modal.openDialog(this, event, 'http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9c83c53e.jpg');" /></div><br>쿠의 피규어<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9c8d6591.jpg" width="250" height="366" onclick="Control.Modal.openDialog(this, event, 'http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9c8d6591.jpg');" /></div><br>케이스<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9c9746b9.jpg" width="250" height="225" onclick="Control.Modal.openDialog(this, event, 'http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9c9746b9.jpg');" /></div><br>OST<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200901/03/39/b0003139_495ee9ca2d571.jpg" width="300" height="304" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200901/03/39/b0003139_495ee9ca2d571.jpg');" /></div><br>전체 박스<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds12.egloos.com/pds/200901/03/39/b0003139_495ee9ca660c2.jpg" width="203" height="239" onclick="Control.Modal.openDialog(this, event, 'http://pds12.egloos.com/pds/200901/03/39/b0003139_495ee9ca660c2.jpg');" /></div><br>파우치 케이스<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9cb8e3b3.jpg" width="300" height="377" onclick="Control.Modal.openDialog(this, event, 'http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9cb8e3b3.jpg');" /></div>내부<br><br>이제부터는 피규어 자랑(?)<br><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9cc32779.jpg" width="265" height="587" onclick="Control.Modal.openDialog(this, event, 'http://pds11.egloos.com/pds/200901/03/39/b0003139_495ee9cc32779.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds12.egloos.com/pds/200901/03/39/b0003139_495ee9ccd79eb.jpg" width="291" height="369" onclick="Control.Modal.openDialog(this, event, 'http://pds12.egloos.com/pds/200901/03/39/b0003139_495ee9ccd79eb.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds10.egloos.com/pds/200901/03/39/b0003139_495ee9cd9f2fb.jpg" width="176" height="400" onclick="Control.Modal.openDialog(this, event, 'http://pds10.egloos.com/pds/200901/03/39/b0003139_495ee9cd9f2fb.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200901/03/39/b0003139_495ee9ce72f4c.jpg" width="318" height="592" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200901/03/39/b0003139_495ee9ce72f4c.jpg');" /></div>			 ]]> 
		</description>
		<category>만화/놀이/도피</category>

		<comments>http://metalbear.egloos.com/4029717#comments</comments>
		<pubDate>Sat, 03 Jan 2009 04:31:43 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 게임음악 - 라그나로크2 OST ]]> </title>
		<link>http://metalbear.egloos.com/3985377</link>
		<guid>http://metalbear.egloos.com/3985377</guid>
		<description>
			<![CDATA[ 
  역시 칸노요코의 작품 이랄까?<br>라그나로크2 OST를 구입했다.<br>벌써 나온지는 1년이 되었지만.. 어찌어찌.. 이제서야 구입하게 되었다...<br>역시 칸노요코의 특징이 처음부터 물씬 풍겨나오는 작품이다...<br><br>칸노요코가 원래 게임음악을 만들다가 분야를 넓혀 오늘날에 이르게 되었다는 사실을 알까?<br>원래 코에이의 음악 작업을 하다가 애니메이션, J-pop, 재즈.. 등등의 작품들을 내놓게 된건데...<br>다시 게임음악이라..<br><br>왠지 대단하다는 생각을 해본다...<br>앞으로도 계속 좋은 음악이 많이 나오길.. ㅋㅋ<br><br>(역시 여기서도 가브리엘라 로빈이.. ㅋㅋ)			 ]]> 
		</description>

		<comments>http://metalbear.egloos.com/3985377#comments</comments>
		<pubDate>Wed, 19 Nov 2008 02:11:03 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
	<item>
		<title><![CDATA[ myisamchk 사용하기  ]]> </title>
		<link>http://metalbear.egloos.com/3595699</link>
		<guid>http://metalbear.egloos.com/3595699</guid>
		<description>
			<![CDATA[ 
  <p>MySQL 서버를 사용하다보면 예기치 못한 문제가 발생하여 데이터가 손상되는 경우가 생길 수 있다. 만약 테이블 타입이 InnoDB 라면 트랜잭션이 적용되기 때문에 그러한 경우 자동으로&nbsp;데이터를 복구하지만 테이블 타입이 MyISAM 이라면 데이터가 손상될 확률이 좀 더 높다. 그런&nbsp;경우 myisamchk 유틸리티를 사용하면 손상된 데이터를 수동으로나마 복구할 수 있다. 테이블을&nbsp;체크하고 복구하는 SQL 로 CHECK TABLE 과 REPAIR TABLE 이 있으나 myisamchk 에 비해&nbsp;속도는 느리다. ( 또한 테이블이 날아갈 확률도 높다. ) </p><p>&nbsp;</p><p>myisamchk 유틸리티는 데이터 파일의 상태를 체크하거나 손상된 데이터 파일을 복구하는 데&nbsp;사용되는 유틸리티이다. 테이블을 안전하게 유지, 보수하고 싶다면 주기적으로 myisamchk 를&nbsp;실행하여 상태를 검사해보는 것이 좋을 것이다.</p><p>&nbsp;</p><p>myisamchk 유틸리티를 이용하여 데이터 파일의 상태를 보거나 체크할 때는 상관없지만 데이터&nbsp;파일을 복구하려 할 때는 반드시 MySQL 서버를 종료한 상태에서 실행해야 한다.</p><p>만약 MySQL 서버를 종요할 수 없는 피치못할 상황이라면 테이블에 Lock 를 건 다음 myisamchk&nbsp;유틸리티를 실행하도록 한다.</p><p>&nbsp;</p><p>myisamchk 유틸리티의 사용 형식은 다음과 같다.</p><p>&nbsp;</p><p>myisamchk [옵션] &lt;테이블명&gt;</p><p>&nbsp;</p><p>이 때 &lt;테이블명&gt; 에는 테이블명만 써서 해당 테이블을 검사할 수도 있고, *.MYI 라고 패턴문자를 사용하여 해당 디렉토리 내의 모든 테이블을 검사할 수도 있다.</p><p>&nbsp;</p><p>다음은 myisamchk 를 이용하는 예제인데&nbsp;orders 테이블의 정보를 출력하는 모습을 보여주고 있다.</p><p>&nbsp;</p><p>C:\windows\system32&gt;</p><p>myisamchk -d c:\APM_Setup\Server\MySQL\data\shopsample\orders</p><p>&nbsp;</p><p>MyISAM file:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c:\APM_Setup\Server\MySQL\data\shopsample\orders<br>Record format:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fixed length<br>Character set:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; latin1 (8)<br>Data records:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp; Deleted blocks:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br>Recordlength:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17</p><p>table description:<br>Key Start Len Index&nbsp;&nbsp; Type<br>1&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp; unique&nbsp; long</p><p>&nbsp;</p><p>myisamchk 유틸리티에서 사용할 수 있는 옵션은 크게 Global 옵션, 체크 옵션, 복구 옵션 그리고&nbsp;그 밖의 옵션으로 나눌 수 있다. Global 옵션은 유틸리티에서 전반적으로 사용되는 일반적인&nbsp;옵션이고, 체크 옵션은 테이블의 상태를 체크하는데 사용하는 옵션이며, 복구 옵션은 테이블을&nbsp;복구할 때 사용하는 옵션이다. 먼저 Global 옵션은 다음과 같다.</p><p>&nbsp;</p><p>+--------------------+-----------------------------------------------------------------+</p><p>| Global 옵션&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| 설명&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</p><p>+--------------------+-----------------------------------------------------------------+</p><p>| -#, --debug=...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| Debug 로그를 출력한다.</p><p>| -?, --help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 도움말을 출력한다.</p><p>| -t, --tmpdir=&lt;경로&gt; &nbsp;| 임시 파일의 경로를 설정한다.</p><p>| -s, --silent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;|&nbsp;침묵 모드로 작동한다. 검사도중 에러가 발생했을 때만 출력한다.</p><p>| -v, --verbose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 상세 정보를 출력한다.</p><p>|-V, --version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | 버전을 출력한다.</p><p>| -w, --wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | 테이블에 Lock 이 걸려있으면 기다린다.</p><p>+--------------------+-----------------------------------------------------------------+</p><p>&nbsp;</p><p>다음은 -d 와 -v 옵션을 이용하여 테이블의 정보를 상세하게 출력한 모습이다.</p><p>&nbsp;</p><p>C:\windows\system32&gt;</p><p>myisamchk -d -v c:\APM_Setup\Server\MySQL\data\shopsample\orders</p><p>&nbsp;</p><p>MyISAM file:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c:\APM_Setup\Server\MySQL\data\shopsample\orders<br>Record format:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fixed length<br>Character set:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; latin1 (8)<br>File-version:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<br>Creation time:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006-10-20 23:51:37<br>Status:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; changed<br>Auto increment key:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; Last value:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17<br>Data records:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp; Deleted blocks:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br>Datafile parts:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp; Deleted data:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br>Datafile pointer (bytes):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp; Keyfile pointer (bytes):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<br>Datafile length:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 136&nbsp; Keyfile length:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2048<br>Max datafile length:&nbsp;&nbsp; 73014444030&nbsp; Max keyfile length:&nbsp;&nbsp; 17179868159<br>Recordlength:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17</p><p>table description:<br>Key Start Len Index&nbsp;&nbsp; Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rec/key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Root&nbsp; Blocksize<br>1&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp; unique&nbsp; long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024<br></p><p>- 체크 옵션은 다음과 같다.</p><p>&nbsp;</p><p>+---------------------------+----------------------------------------------------------+</p><p>| 체크 옵션&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 설명&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p><p>+---------------------------+----------------------------------------------------------+</p><p>| -c, --check&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 테이블에 오류가 없는지 체크한다.</p><p>| -e, --extend-check&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 테이블에 오류가 없는지 좀 더 세밀하게 검사한다.</p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 오류를 수정했음에도 불구하고 계속해서 오류가 발생할때</p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|&nbsp; 이 옵션을 부여한다. 대신 체크 속도는 느리다.</p><p>| -F, --fast&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 테이블이 제대로 닫혀있는지 체크한다.</p><p>| -C, --check-only-changed&nbsp; | 마지막으로 체크한 이후로 변경된 테이블만 체크한다.</p><p>| -f, --force&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 체크중 에러가 발견되면 에러 테이블을 표시해놓고 </p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| 바로 복구를 시작한다.</p><p>| -i, --information&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;체크된 테이블의 정보를 출력한다.</p><p>| -m, --medium-check&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | --extend-check 체크보다 빠르게 체크한다.</p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;일반적으로 많이 사용한다.</p><p>| -U, --update-state&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 에러가 발견된 테이블을 표시해둔다.</p><p>| -T, --read-only&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 에러가 발견되어도 테이블에 표시해두지 않는다.</p><p>+---------------------------+----------------------------------------------------------+</p><p>&nbsp;</p><p>다음은 -eis 옵션을 주고 테이블을 체크한 모습이다.</p><p>&nbsp;</p><p>C:\windows\system32&gt;</p><p>myisamchk -eis -v c:\APM_Setup\Server\MySQL\data\shopsample\orders<br></p><p>Checking MyISAM file: c:\APM_Setup\Server\MySQL\data\shopsample\orders<br>No recordlinks<br>block_size 1024:<br>Key:&nbsp; 1:&nbsp; Keyblocks used:&nbsp;&nbsp; 6%&nbsp; Packed:&nbsp;&nbsp;&nbsp; 0%&nbsp; Max levels:&nbsp; 1<br>Total:&nbsp;&nbsp;&nbsp; Keyblocks used:&nbsp;&nbsp; 6%&nbsp; Packed:&nbsp;&nbsp;&nbsp; 0%</p><p>Records:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp; M.recordlength:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17&nbsp;&nbsp; Packed:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0%<br>Recordspace used:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 100%&nbsp;&nbsp; Empty space:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0%&nbsp; Blocks/Record:&nbsp;&nbsp; 1.00<br>Record blocks:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp; Delete blocks:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br>Record data:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 136&nbsp;&nbsp;&nbsp; Deleted data:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br>Lost space:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; Linkdata:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0</p><p>&nbsp;</p><p>다음으로 복구 옵션과 그 밖의 옵션은 다음과 같다.</p><p>&nbsp;</p><p>+-------------------------------+------------------------------------------------------+</p><p>| 복구 옵션&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 설명</p><p>+-------------------------------+------------------------------------------------------+</p><p>| -B, --backup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| .MYD 파일의 백업 파일을 '&lt;파일명&gt;-&lt;생성시간&gt;.BAK' 라는</p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;| 이름으로 만든다.</p><p>| --correct-checksum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 테이블의 checksum 정보를 바로 잡는다.</p><p>| -D, --data-file-length=&lt;크기&gt;&nbsp; &nbsp;| 복구후 다시 생성할 데이터 파일의 최대 크기를 지정한다.</p><p>| -e, --extend-check&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 로우 단위로 세밀하게 복구한다. 따라서 많을 쓰레기 값들이</p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;| 생길 수 있다. 파일이 완전히 손상된 경우에만 이 옵션을</p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 사용하도록 한다.</p><p>| -f, --force&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| 기존의 임시 파일을 덮어쓴다.</p><p>| -r, --recover&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 거의 모든 것을 복구한다.</p><p>| -n, --sort-recover&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 임시 파일이 매우 크더라도 강제적으로 정렬해서 복구한다.</p><p>| -o, --safe-recover&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; | 예전 버전의 복구 방법을 사용하여 복구한다. -r 보다는</p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | 느리지만 -r 옵션에서 복구할 수 없는 몇가지 것들을</p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;복구할 수 있다.</p><p>| --character-sets-dir=...&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 문자셋 디렉토리를 지정한다.</p><p>| --set-characater-set=&lt;문자셋&gt; | 문자셋을 지정한다.</p><p>| -q, --quick&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 데이터 파일(.MYD) 를 제외하고 빠르게 복구한다.</p><p>+------------------------------+-------------------------------------------------------+</p><p>&nbsp;</p><p>+------------------+-------------------------------------------------------------------+</p><p>| 그 밖의 옵션&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 설명&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p><p>+------------------+-------------------------------------------------------------------+</p><p>| -a, --analyze&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | 키의 분포를 분석한다. 몇몇 JOIN 을 빠르게 할 것이다.</p><p>| -d, --description&nbsp; &nbsp;| 테이블의 정보를 출력한다.</p><p>| -S, --sort-index&nbsp;&nbsp; &nbsp;| 인덱스 블록을 정렬한다. 다음 값 읽기(read-next) 의 속도를 향상시킨다.</p><p>| -R, --sort-records | 인덱에 따라 로우를 정렬한다. SELECT 와 ORDER BY 속도를 향상 시킬</p><p>| =&lt;인덱스 번호&gt;&nbsp;&nbsp;&nbsp;&nbsp; | 수 있다. &lt;인덱스 번호&gt; 는 SHOW INDEX FROM &lt;테이블명&gt; 으로</p><p>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 알 수 있다.</p><p>+------------------+-------------------------------------------------------------------+</p><p>&nbsp;</p><p>테이블의 데이터 파일은 시스템이 전원이 나가서 MySQL 서버가 비정상 종료된 경우나 하드웨어의 결함 등으로 손상될 수 있다.</p><p>&nbsp;</p><p>테이블이 손상된 경우에는 다음과 같은 에러가 출력될 수 있다.</p><p>&nbsp;</p><p>&lt;테이블명&gt;.frm' is locked against change</p><p>Can't find file &lt;테이블명&gt;.MYI' (Errcode: &lt;에러코드&gt;)</p><p>Unexpected end of file</p><p>Record file is crashed</p><p>&nbsp;</p><p>테이블이 손상되면 myisamchk 를 이용하여 복구를 실행하게 되는데, 손상된 부분을 찾아 복구 하는 과정을 알아보자.</p><p>&nbsp;</p><p>그전에 먼저 테이블의 데이터 파일에 대해 알아야 할 필요가 있다. 앞서 설명한 바가 있지만 하나의 테이블에 대해 기본적으로 3 개의 파일이 생성된다. 각각의 파일은 다음과 같다.</p><p>&nbsp;</p><p>+------------------+-------------------------------------------------------------------+</p><p>| 파일&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 설명&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p><p>+------------------+-------------------------------------------------------------------+</p><p>| &lt;테이블명&gt;.MYI&nbsp;&nbsp; | 인덱스 파일이다.</p><p>| &lt;테이블명&gt;.frm&nbsp;&nbsp;&nbsp;&nbsp; | 테이블의 구조를 정의하는 파일이다.</p><p>| &lt;테이블명&gt;.MYD&nbsp; | 데이터 파일이다.</p><p>+------------------+-------------------------------------------------------------------+</p><p>&nbsp;</p><p>에러 코드에 대한 에러 메세지를 보는 방법</p><p>MySQL 의 bin 디렉토리를 보면 perror 라는 유틸리티를 찾을 수 있다. 이 유틸리티는 MySQL 의 에러 코드에 대한 메시지를 확인할 때 사용할 수 있는 유틸리티이다. 사용 방법은 다음과 같다.</p><p>&nbsp;</p><p>perror [옵션] [&lt;에러코드1&gt; [&lt;에러모드2&gt;...]]</p><p>&nbsp;</p><p>perror 을 이용하여 몇 개의 에러 코드에 대한 메시지를 출력한 예이다.</p><p>&nbsp;</p><p>C:\windows\system32&gt;perror 126 127 132<br></p><p>MySQL error:&nbsp; 126 = Index file is crashed<br>MySQL error:&nbsp; 127 = Record-file is crashed<br>MySQL error:&nbsp; 132 = Old database file</p><p>&nbsp;</p><p>테이블의 복구 과정은 다음과 같이 진행된다.</p><p>&nbsp;</p><p>1 단계 : 테이블 체크</p><p>먼저 myisamchk *.MYI 를 실행하거나 시간이 더 있다면 myisamchk -e *.MYI 를 실행하여 어떤&nbsp;테이블에 오류가 있는지 체크한다. 테이블의 오류가 체크되면 2 단계로 넘어가고, 체크가 되지 않거나 체크 도중 에러가 발생하면 3 단계로 넘어간다.</p><p>&nbsp;</p><p>2 단계 : 쉬우면서 안전한 복구</p><p>오류가 있는 테이블을 발견하였으므로 myisamchk -r -q &lt;테이블명&gt; 을 실행하여 빠른 복구를 실행한다. -q 옵션을 부여하였기 때문에 데이터 파일(.MYD) 은 건드리지 않고 인덱스 파일을 복구할 것이다. 이런 식으로 계속해서 다음 테이블을 복구한다.</p><p>&nbsp;</p><p>그래도 복구가 되지 않으면 다음과 같이 시도한다.</p><p>&nbsp;</p><p>1. 데이터 파일을 백업해둔다.</p><p>2. myisamchk -r &lt;테이블명&gt; 을 실행하여 복구 모드로 복구를 실행한다. 오류가 있는 로우를&nbsp;삭제하면서 새로운 인덱스 파일을 생성할 것이다.</p><p>3. 그래도 안되면 myisamchk --safe-recover &lt;테이블명&gt; 을 실행한다. 예전 버전의 복구 방법이지만 이 옵션으로 복구될 수도 있다.</p><p>&nbsp;</p><p>복구 도중 에러가 발생하면 3 단계로 넘어간다.</p><p>&nbsp;</p><p>3 단계 : 어려운 복구</p><p>이 단계는 인덱스 파일의 처음 16K 가 손상되거나 잘못된 정보를 가지고 있을 때 혹은 인덱스 파일이 없을 때 실시하게 된다. 이러한 경우 필요에 따라 다음과 같이 인덱스 파일을 생성하도록 한다.</p><p>&nbsp;</p><p>&nbsp; 1. 데이터 파일(.MYD) 을 다른 장소로 이동한다. 복사가 아니라 이동이다.</p><p>&nbsp; 2. mysql&gt; 에 접속하여 해당 테이블을 삭제한다. TRUNCATE TABLE 문장을 사용할 것을&nbsp;권장한다.</p><p>&nbsp; 3.&nbsp;앞서 이동시켜둔 데이터 파일을 원래 위치로 복사하자. 이 때는 이동이 아니라 복사를 시켜서&nbsp;만약의 사태를 대비한다.</p><p>&nbsp;&nbsp;4. myisamchk -r -q &lt;테이블명&gt; 을 실행하여 복구한다. .frm 파일과 .MYD 파일을 이용하여&nbsp;인덱스 파일(.MYI) 이 복구될 것이다.</p><p>&nbsp;</p><p>4 단계 : 매우 어려운 복구</p><p>이 단계는 .frm 파일마저 심하게 손상되었을 때 실행한다. 사실 최초 테이블을 생성항 이후 .frm&nbsp;파일은 변경될 일이 없기 때문에 .frm 파일이 손상되는 일은 거의 발생하지 않는다. 이러한 경우 다음과 같은 방법으로 복구를 실시한다.</p><p>&nbsp;</p><p>&nbsp;&nbsp;1. 백업해둔 파일이 있다면 백업해둔 .frm 파일을 원래 자리로 복사시키고 3 단계를 실시한다.</p><p>&nbsp; &nbsp;&nbsp; 그리고 백업해둔 .MYI 파일을 원래 자리로 복사시키고 2 단계를 실시한다. 그리고 나서&nbsp;마지막으로 myisamchk -r 을 실행한다.</p><p>&nbsp;&nbsp;2. 백업해둔 파일은 없지만 테이블의 구조를 알고 있다면 .frm 파일과 .MYI 파일은 복구할 수&nbsp;있다. 먼저 다른 곳에서 새로 테이블을 생성하여 .frm 과 .MYI 파일을 만들 수 있다. 물론&nbsp; .MYD 파일은 새로 만들 수는 없을 것이다. 2 단계로 가서 기존의 .MYD 파일을 이용하여&nbsp; .MYI 파일을 재구성한다.<br><br>출처 : 네이버 블로그 어딘가.. -_-;; 예전에 받아서 보고 정리해놓은... 거라...</p><br/><br/>tag : <a href="/tag/mysql" rel="tag">mysql</a>,&nbsp;<a href="/tag/myISAM" rel="tag">myISAM</a>,&nbsp;<a href="/tag/myisamchk" rel="tag">myisamchk</a>,&nbsp;<a href="/tag/테이블에러" rel="tag">테이블에러</a>,&nbsp;<a href="/tag/인덱스생성" rel="tag">인덱스생성</a>,&nbsp;<a href="/tag/테이블복구" rel="tag">테이블복구</a>,&nbsp;<a href="/tag/인덱스복구" rel="tag">인덱스복구</a>			 ]]> 
		</description>
		<category>MySQL</category>
		<category>mysql</category>
		<category>myISAM</category>
		<category>myisamchk</category>
		<category>테이블에러</category>
		<category>인덱스생성</category>
		<category>테이블복구</category>
		<category>인덱스복구</category>

		<comments>http://metalbear.egloos.com/3595699#comments</comments>
		<pubDate>Mon, 28 Jan 2008 02:22:58 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 새해... ]]> </title>
		<link>http://metalbear.egloos.com/3558788</link>
		<guid>http://metalbear.egloos.com/3558788</guid>
		<description>
			<![CDATA[ 
  2008년도 시작되었다...<br>이제 내 나이 어언 32.. -_-;;;<br>올해에는.. 가야지.. ㅎㅎㅎ<br><br><br>그리고 올해의 목표는... 대박... -_-V<br/><br/>tag : <a href="/tag/올해" rel="tag">올해</a>,&nbsp;<a href="/tag/목표" rel="tag">목표</a>			 ]]> 
		</description>
		<category>올해</category>
		<category>목표</category>

		<comments>http://metalbear.egloos.com/3558788#comments</comments>
		<pubDate>Wed, 02 Jan 2008 02:00:25 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 백업 용어 정리 ]]> </title>
		<link>http://metalbear.egloos.com/3540284</link>
		<guid>http://metalbear.egloos.com/3540284</guid>
		<description>
			<![CDATA[ 
  <pre>출처: <a href="http://smiletw.myscan.org/myarticle/TarBackup.txt">http://smiletw.myscan.org/myarticle/TarBackup.txt</a><br>=====================================================================================<br>제 5회 데비안유저스 세미나</pre><pre><br>날&nbsp; 짜 : 2002년 5월 11일<br>작성자 : 엄태욱(smiletw)<br>=====================================================================================<br>백업 용어 정리</pre><pre>- 풀 백업 (full backup)<br>&nbsp;파일 셋 안의 모든 파일을 포함해서 모두 복사하는 방법 <br>&nbsp;하나의 컴퓨터 시스템이나 하나의 디스크 파티션에서 사용<br>&nbsp;새로운 커널을 만든다거나 새로운 어플리케이션 팩키지를 추가한다든지 또는 <br>새로운 버젼의 운영체제를 설치하는 등의 시스템에 중요한 변화를 주었을 경우 </pre><pre>- 증분 백업 (incremental backup)<br>&nbsp;시스템이 이전에 백업한 이후로 변경된 파일만을 복사<br>&nbsp;풀 백업이 너무 방대하고 자료 변경이 별로 없을 때</pre><pre>- 백업 단계 (backup level)<br>단계(level) 0 : 풀 백업<br>단계(level) 1 : 마지막 풀 백업(단계 0) 이후에 변경된 모든 파일 저장<br>단계(level) 2 : 마지막 단계 1 백업 이후에 변경된 모든 파일 저장</pre><pre>- 무인 백업 (unattended backup)<br>cron을 사용해 백업 명령어가 자동으로 수행<br>보안이 확실히 보장될 때가 아니면 무인 백업은 사용하지 않는것이 좋다.</pre><pre>&nbsp;</pre><pre>tar<br>테이프 생성을 위한 유틸리티로서 바이너리 데이터를 처리할 수 있다. 또한 여러 디렉토리를<br>아카이브로 묶을 수 있으며 링크를 포함하는 디렉토리들을 전송할 수 있으면서도<br>파일의 소유권과 액세스 퍼미션 등도 그대로 보존할 수 있는 장점이 있다.</pre><pre><br>간단한 tar의 사용법</pre><pre>tar의 플래그<br>c : 아카이브 생성<br>x : 아카이브로 부터 파일 추출<br>t : 목차 테이블 보기<br>v : 상세한 정보 출력</pre><pre><br>$ cd /<br>$ tar -cf backup.tar home</pre><pre>/home 의 하위디렉토리를 포함하여 backup.tar로 저장</pre><pre>$ gzip backup.tar<br>backup.tar.gz 이라는 파일을 생성하여 원래의 tar 아카이브보다 훨씬 더 작게 압축</pre><pre>$ cd /<br>$ tar -cf - home | gzip &gt; backup.tar.gz</pre><pre>$ tar -cvf - home | gzip &gt; backup.tar.gz 을 하였을때는 tar에 따라서 v(verbose)<br>옵션을 stderr로 처리하지 않고 stdout으로 처리하여 문제를 일으키는 경우가 있다<br>따라서 아카이브를 만들때는 v옵션을 빼는 것이 좋고, 아카이브를 풀 때는 v 옵션과<br>관계가 없다.</pre><pre>$ gunzip backup.tar.gz<br>$ tar -xf backup.tar</pre><pre>$ zcat backup.tar.gz | tar -xf -</pre><pre>GNU tar의 경우 gzip 처리를 내장하고 있다. 따라서 다음과 같이 처리할 수 있다.<br>$ cd /<br>$ tar -czf backup.tar.gz home</pre><pre>$ tar -xzf backup.tar.gz </pre><pre><br>$ tar -tf backup.tar<br>아카이브를 풀기전에 항상 파일들의 이름을 먼저 검사한다<br>만일 아카이브 소그이 파일들이 현재 디렉토리에 풀리도록 묶여 있다면,<br>임시 디렉토리를 새로 하나 만들고, 그곳으로 이동(cd)하여 파일들을 풀어낸다.</pre><pre>&nbsp;</pre><pre>일부 파일들만 뽑아내기<br>$ tar -xvf backup.tar filename<br>여기서 filename은 tar의 t옵션으로 파일의 경로명까지 알아야 한다.<br>filename과 ./filename은 서로 다르므로 정확한 파일명을 지정해야 한다.</pre><pre>$ tar -xvf backup.tar `tar -tf backup.tar|grep filename`<br>의 방법을 쓰는 것도 좋다.</pre><pre>&nbsp;</pre><pre>절대 경로 문제<br>절대경로를 갖는 디렉토리 또는 파일을 복구할때 문제가 발생한다.<br>tar는 아카이브에 지정되어 있는 경로명으로 파일을 복구하기 때문에<br>파일이 복구될 곳을 변경할 수가 없다. 따라서 이미 존재하는 파일을 덮어쓰거나<br>퍼미션 문제가 발생할 수 있다.<br>GNU tar의 경우, 기본적으로 모든 절대 경로명을 상대경로 변경하여 아카이브를 만든다.<br>--absolute-names 옵션을 사용하면 절대 경로로 아카이브를 만든다.</pre><pre>가장 좋은 방법은 아카이브를 만들때 디렉토리가 슬래시(/)나 틸드(~)로 시작하지<br>않도록 조심하는 것이다.</pre><pre>또는<br>$ cd /<br>$ tar -cf backup.tar .<br>를 줄여서</pre><pre>$ tar -cf backup.tar -C / .<br>-C 옵션은 아카이브를 생성하기 전에 /로 이동하도록 한다. 여러 개의 디렉토리들을<br>아카이브로 만들려면 -C옵션을 여러번 사용한다.</pre><pre>$ tar -cf backup.tar -C /home/smiletw . -C /home/woody ./test</pre><pre>&nbsp;</pre><pre>아카이브에 추가하기<br>4 tar -uvf backup.tar home<br>새로운 파일들만 업데이트 한다.<br>동일한 파일이 업데이트 되면 아카이브 마지막에 추가한다.<br>(테입장치에서는 중간에 넣을 수 없는 것을 감안)</pre><pre>&nbsp;</pre><pre>GNU tar를 이용한 풀백업 및 증분 백업</pre><pre>일반적으로 tar를 이용해서 아카이브를 만들면 풀백업이 된다. 그러나 사용자 홈디렉토리<br>또는 한 파티션 전체를 백업할때는 풀 백업을 자주 사용하기 힘들다. 이럴경우 풀 백업과<br>함께 증분 백업을 해 주는 것이 좋다. GNU tar는 옵션 처리만으로 손쉽게 풀백업과<br>증분 백업이 가능하게 해준다.<br>&nbsp;먼저 GNU tar의 풀 백업 및 증분 백업에 쓰이는 옵션이 2가지 있다. -G (--incremental)<br>옵션과 -g snapshot-file (--listed-incremental) 이 그것이다.<br>&nbsp;-G 옵션은 예전 증분 백업 포맷으로 아카이브를 생성해 준다. 이 옵션으로 생성된<br>아카이브에는 아카이브 내에 포함되어 있는 파일이나 디렉토리의 정보가 들어가므로<br>비표준 아카이브로 생성된다. 따라서 GNU버젼이 아닌 tar로도 내용을 볼 수가 없게 된다.<br>&nbsp;-g snapshot-file 옵션은 표준 아카이브로 생성되면서, 파일이나 디렉토리 등의 정보를<br>snapshot-file에 따로 저장함으로써, 표준 아카이브를 생성하게 만들어 준다. 따라서 <br>GNU tar를 이용한 풀 백업 및 증분 백업에서는 -G 옵션이 아닌 -g snapshot-file 옵션을<br>사용하는 것이 좋다.</pre><pre>풀 백업<br>$ tar -g list -czvf backup.tar.gz home/<br>list 라는 snap-shot 파일이 생성된다. 그리고 backup.tar.gz이라는 백업된<br>아카이브가 생성된다.</pre><pre>증분 백업<br>$ tar -g list -czvf backup-1.tar.gz home/<br>기존의 list 파일에서 이미 풀 백업된 내용을 확인하고, 그 이후에 변경되거나 추가되거나<br>삭제된 파일들을 backup-1.tar.gz에 백업한다.</pre><pre>&nbsp;</pre><pre>GNU tar를 이용한 복구</pre><pre>먼저 풀 백업된 아카이브를 복구한다.<br>$ tar -g list -xzvf backup.tar.gz<br>다음으로 증분 백업된 아카이브들 중 가장 최근에 백업한 것만 복구하면 된다.<br>$ tar -g list -xzvf backup-10.tar.gz</pre><pre>백업 및 복구의 유용한 옵션<br>-W (--verify) 검증<br>&nbsp;백업을 하는 도중 변경되는 파일이 있을 경우가 있다. 특히 풀 백업과 같이 시간이 <br>오래 걸리는 백업의 경우 아카이브가 생성되는 동안 변경될 가능성이 높다. 따라서<br>풀 백업의 경우 검증해주는 것이 좋다.<br>$ tar -g list -cvf backup.tar home/<br>이 경우 아카이브 생성 후, 아카이브의 내용과 실제 디렉토리의 내용과 같은지 확인한다.<br>그러나 gzip으로 압축하는 -z 옵션과 같이 사용할 수 없다. 따라서 검증 옵션을 사용해서<br>아카이브를 생성할 경우 gzip압축은 따로 해주어야 한다.</pre><pre>&nbsp;</pre><pre>백업 정책</pre><pre>GNU tar의 경우 앞서 말한 level 1 백업까지만을 지원해 준다. snapshot-file이 없을<br>경우 풀 백업(level 0)을 하고, snapshot-file이 이미 존재할 경우 증분 백업(level 1)을<br>하게 된다. 따라서 어느 시점에 풀 백업을 해야 하는지가 백업 정책에서 중요하다.<br>백업할 파일들이 자주 변경될 경우, 풀 백업의 주기도 짧아진다. 또한 변화될 데이터가<br>매우 중요할 경우, 백업도 자주 해야한다.<br>&nbsp;일반적으로 level 1 백업만을 지원해 주는 GNU tar를 이용한다면, 1주일에 한번 풀 백업<br>을 실행하고 매일 증분 백업을 한다. 백업하는 시간은 파일의 변화가 적은 새벽이 좋다.<br>따라서 일요일 새벽12시를 전 후해서 풀 백업을 하고, 매일 새벽에 증분 백업을 하는 것이<br>좋다.<br>&nbsp;또한 풀 백업의 경우, 검증 옵션 (-W)을 사용하여, 아카이브를 검증해주는 것이 좋다.<br>그리고 아카이브의 크기를 줄이기 위해서 -z 옵션을 사용하여 압축해 주는 것이 좋다.<br>&nbsp;아카이브를 만들 때는 아카이브의 이름에 신경을 써주어야 백업을 할 때, 혼란이 적다.<br>풀 백업을 할 경우 다음과 같이 snapshot-file의 이름도 백업 날짜를 써주는 것이 좋다.<br>$ tar -g 2002-05-11.list -W -cvf 2002-05-11-full.tar home/</pre><pre>증분백업 때도 마찬가지로 날짜를 써 주는 것이 좋다.<br>$ tar -g 2002-05-11.list -czvf 2002-05-12.tar.gz home/</pre><pre>그리고 -g 옵션에 쓰이는 snapshot-file의 보관 또한 중요하다. snapshot-file이 없으면<br>증분 백업된 아카이브는 수정된 부분만 저장되어 있는 일반 아카이브와 같아진다. 즉, <br>풀 백업 이후 삭제된 파일이 있음에도 불구하고, 증분 백업된 아카이브를 복구할 때,<br>풀 백업된 아카이브의 복구때 생성된 파일이 삭제되지 않는다. 따라서 용량이 작은<br>snapshot-file은 꼭 따로 안전한 곳에 보관해 주어야 한다.</pre><pre>참고문헌<br>--------<br>유닉스 파워툴 (한빛 미디어)<br>시스템 관리의 핵심 (한빛 미디어)<br>GNU tar manual : <a href="http://www.gnu.org/manual/tar-1.12/html_mono/tar.html">http://www.gnu.org/manual/tar-1.12/html_mono/tar.html</a></pre><pre>이 문서는 GNU GPL를 따릅니다.<br></pre><br/><br/>tag : <a href="/tag/백업" rel="tag">백업</a>,&nbsp;<a href="/tag/backup" rel="tag">backup</a>,&nbsp;<a href="/tag/tar" rel="tag">tar</a>,&nbsp;<a href="/tag/용어정리" rel="tag">용어정리</a>,&nbsp;<a href="/tag/gunzip" rel="tag">gunzip</a>			 ]]> 
		</description>
		<category>LINUX</category>
		<category>백업</category>
		<category>backup</category>
		<category>tar</category>
		<category>용어정리</category>
		<category>gunzip</category>

		<comments>http://metalbear.egloos.com/3540284#comments</comments>
		<pubDate>Thu, 20 Dec 2007 18:42:27 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
	<item>
		<title><![CDATA[ tar 압축  ]]> </title>
		<link>http://metalbear.egloos.com/3539927</link>
		<guid>http://metalbear.egloos.com/3539927</guid>
		<description>
			<![CDATA[ 
  <div class="contents"><div class="answer_contents"><p>tar - GNU 버전 tar 저장 도우미 </p><p>이 설명서는 tarfile 이라고 알려진 저장 파일을 묶거나 풀 수 있도록 만들어 진 GNU 버전 tar 저장 프로그램에 대한 설명이다. tarfile 은 테이프 드라이브에 저장할 수도 있고, tarfile 을 일반적인 보통 파일로 쓸 수도 있다. tar 의 첫번째 인수로는 반드시 Acdrtux 중 하나의 옵션이 들어가야 하고, 다른 선택적인 기능이 &nbsp;덧붙여진다. tar 의 마지막 인수로는 압축될 파일이나 디렉토리의 이름이 오게된다. 디렉토리 이름이 사용될 경우 언제나 하위 디렉토리가 함께 저장된다. </p><p>가장 많이 사용하는 일반적인 옵션 </p><p><br>[압축할 때] tar cvzf 파일명.tar.gz &lt;디렉토리&gt; 또는 파일 <br>[압축 해제] tar xvzf 파일명.tar.gz </p><p>[예제] <br>tar -xvvf foo.tar : foo.tar 파일을 푼다. <br>tar -xvvzf foo.tar.gz : gzip으로 압축된 foo.tar.gz 파일을 푼다. <br>tar -cvvf foo.tar foo/ : foo 디렉토리에 있는 내용물을 foo.tar 파일로 묶는다. </p><p>기능 옵션 <br>반드시 아래 옵션들 중 하나가 들어가야 한다. <br>-A, --catenate, --concatenate : 저장 파일에 tar 파일을 추가한다. <br>-c, --create : 새 저장 파일을 만든다. <br>-d, --diff, --compare : 저장 파일 혹은 파일 시스템 간의 다른 점을 찾는다. <br>--delete : 저장 파일에서 지운다. (자기 테이프에는 쓰면 안됨!) <br>-r, --append : 저장 파일의 끝에 파일을 덧붙인다. <br>-t, --list : 저장 파일의 내용 목록을 보여준다. <br>-u, --update : 저장 파일에 저장된 사본보다 새로운 파일만을 덧붙인다. <br>-x, --extract, --get : 저장된 것에서 풀어낸다. </p><p>부가적인 옵션 <br>--atime-preserve : 덤프된 파일의 접근 시간을 바꾸지 않는다. <br>-b, --block-size N : 블럭 크기를 N x 512 바이트로 정한다. (기본값 N = 20) <br>-B, --read-full-blocks : 읽은 만큼 블럭을 재지정한다. (4.2BSD 파이프를 읽기 위함) <br>-C, --directory DIR : DIR 디렉토리로 바꾸고 작업을 한다. <br>--checkpoint : 저장 파일을 읽는 동안 디렉토리 이름을 출력한다. <br>-f, --file [HOSTNAME:]F : 저장 파일 혹은 장치 파일 F에 저장한다. <br>&nbsp;(기본 "-", 표준입/출력을 나타낸다.) <br>--force-local : colon 문자가 있더라도 저장 파일을 지역 파일로 처리한다. <br>-F, --info-script F --new-volume-script F : run script at end of each tape (implies -M)<br>&nbsp;테이프의 끝에 도달하면 스크립트를 실행한다. (-M 이 포함된다.) <br>-G, --incremental : 이전 GNU 형식으로 incremental 백업을 만들거나 목록을 보거나 풀어낸다. <br>-g, --listed-incremental F : 새로운 GNU 형식으로 incremental 백업을 만들거나 목록을 보거나<br>&nbsp;풀어낸다. <br>-h, --dereference : 심볼릭 링크를 묶지 않는다. 그것이 가리키는 파일을 묶는다. <br>-i, --ignore-zeros : 크기가 0인 것은 무시한다. (보통 EOF를 의미한다.) <br>-j, --bzip2 : bzip2 필터를 사용하여 .bz2 파일을 푼다. <br>--ignore-failed-read : 읽을 수 없는 파일이 있더라도 종료 코드 0을 출력하지 않는다. <br>-k, --keep-old-files : 기존에 있는 파일을 유지한다. 파일이 있으면 덮어쓰지 않는다. <br>-K, --starting-file F : 저장 파일에 있는 파일 F에서부터 시작한다. <br>-l, --one-file-system : 저장 파일을 만들 때 로컬 파일 시스템 안의 놓는다. <br>-L, --tape-length N : N * 1024 바이트를 쓴 다음 테이프를 바꾼다. <br>-m, --modification-time : 파일의 변경 시간 정보를 유지하지 않는다. <br>-M, --multi-volume : 여러 개로 나눠진 저장 파일로 만들거나 목록을 보거나 풀어낸다. <br>-N, --after-date DATE, --newer DATE : 주어진 DATE 보다 새로운 파일만 저장한다. <br>-o, --old-archive, --portability : ANSI 형식 대신 V7 형식으로 저장한다. <br>-O, --to-stdout : 표준 출력으로 파일들을 풀어낸다. <br>-p, --same-permissions, --preserve-permissions : 모든 퍼미션 정보를 유지한다. <br>-P, --absolute-paths : 파일 이름의 맨 앞 `/' 문자를 버리지 않는다. <br>--preserve : -p 옵션과 -s 옵션을 함께 사용한 것과 같다. <br>-R, --record-number : 저장 파일의 레코드 번호를 각각의 메시지로 보여준다. <br>--remove-files : 파일을 저장 파일에 덧붙인 다음 파일을 지운다. <br>-s, --same-order, --preserve-order : 저장 파일 목록과 똑같은 순서로 풀어낸다. <br>--same-owner : 같은 사용자 소유권으로 파일들을 풀어낸다. <br>--numeric-owner : user/group 이름으로 항상 숫자를 사용한다. <br>-S, --sparse : 듬성한 파일을 효율적으로 다룬다. <br>-T, --files-from F : 파일 F에서 목록을 읽어 추출하거나 만든다. <br>--null : -T reads null-terminated names, disable -C -C를 비활성화하고, -T로 읽을 때 null로 끝<br>&nbsp;나는 이름을 읽는다. <br>--totals : --create로 만들어진 바이트 총합을 출력한다. <br>-v, --verbose : 처리중인 파일을 자세하게 보여준다. <br>-V, --label NAME : 저장 파일의 볼륨 이름을 NAME으로 한다. <br>--version : tar 프로그램의 버전 정보를 출력한다. <br>-w, --interactive, --confirmation : 각각을 처리할 때 마다 물어본다. <br>-W, --verify : attempt to verify the archive after writing it 저장 파일을 쓴 후에 저장 파일을<br>&nbsp;점검한다. <br>--exclude=FILE : FILE을 제외한다. <br>-X, --exclude-from FILE : FILE 목록에 있는 것을 제외한다. <br>-Z, --compress, --uncompress <br>compress로 압축하거나 푼다. <br>-z, --gzip, --ungzip : gzip으로 압축하거나 푼다. <br>--use-compress-program PROG : PROG로 저장 파일을 다시 처리한다. (PROG은 반드시 -d를 처리해야 한다.) <br>--block-compress : 테이프에 저장할 때 압축 프로그램의 출력을 막는다. <br>--rsh-command=CMD : `rsh' 대신 원격 COMMAND를 사용한다. 이 옵션은 표준 `rsh' 대신 원격 장치에 접근<br>&nbsp;할 수 있는 다른 것(예를 들어, Kerberized `rsh')을 사용하는 사람들을 위해 필요하다. <br>-[0-7][lmh] : 드라이브와 밀도를 지정한다. <br><br>출처 : 네이버 지식인 ( <a href="http://kin.naver.com/detail/detail.php?d1id=1&amp;dir_id=10202&amp;eid=SCUcWoZoEKga3XgZVrEauQF3LeNP8lj7&amp;qb=dGFyIGZvcmNl">http://kin.naver.com/detail/detail.php?d1id=1&amp;dir_id=10202&amp;eid=SCUcWoZoEKga3XgZVrEauQF3LeNP8lj7&amp;qb=dGFyIGZvcmNl</a>&nbsp;)</p></div></div><br/><br/>tag : <a href="/tag/linux" rel="tag">linux</a>,&nbsp;<a href="/tag/tar" rel="tag">tar</a>,&nbsp;<a href="/tag/gzip" rel="tag">gzip</a>,&nbsp;<a href="/tag/압축" rel="tag">압축</a>,&nbsp;<a href="/tag/옵션" rel="tag">옵션</a>,&nbsp;<a href="/tag/tar옵션" rel="tag">tar옵션</a>			 ]]> 
		</description>
		<category>LINUX</category>
		<category>linux</category>
		<category>tar</category>
		<category>gzip</category>
		<category>압축</category>
		<category>옵션</category>
		<category>tar옵션</category>

		<comments>http://metalbear.egloos.com/3539927#comments</comments>
		<pubDate>Thu, 20 Dec 2007 14:18:32 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
	<item>
		<title><![CDATA[ PODICS - 시작.. ㅎㅎㅎ ]]> </title>
		<link>http://metalbear.egloos.com/3528364</link>
		<guid>http://metalbear.egloos.com/3528364</guid>
		<description>
			<![CDATA[ 
  podics를 시작하게 되었슴다..<br>podcast라는 생소한 미디어...<br>어찌어찌 기회가 되어 시작하게 되었죠...<br>-_-;; 실은.. 주변의 압박에 의해서.. 가입도 하고... 팟캐스트내용도 올리고..<br>먼가 신기한 세계인 것 같네요...<br><br>팟 캐스트.. 흥미를 끌만한데... 생각 있으심..<br><a href="http://www.podics.com/">www.podics.com</a>&nbsp;으로....<br>우리나라 최초의 팟캐스팅 사이트입니다... <br><br><br>여기까지 광고?<br/><br/>tag : <a href="/tag/팟캐스트" rel="tag">팟캐스트</a>,&nbsp;<a href="/tag/podcast" rel="tag">podcast</a>,&nbsp;<a href="/tag/podics" rel="tag">podics</a>,&nbsp;<a href="/tag/파딕스" rel="tag">파딕스</a>,&nbsp;<a href="/tag/포딕스" rel="tag">포딕스</a>			 ]]> 
		</description>
		<category>일/작업/무저갱..</category>
		<category>팟캐스트</category>
		<category>podcast</category>
		<category>podics</category>
		<category>파딕스</category>
		<category>포딕스</category>

		<comments>http://metalbear.egloos.com/3528364#comments</comments>
		<pubDate>Thu, 13 Dec 2007 04:09:33 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [linux]SSH / SCP 소프트웨어 자료  ]]> </title>
		<link>http://metalbear.egloos.com/3528192</link>
		<guid>http://metalbear.egloos.com/3528192</guid>
		<description>
			<![CDATA[ 
  [linux]SSH / SCP 소프트웨어 자료 <br>SSH란 무엇인가? <br>우리가 별 생각없이 쓰고 있는 전통적인 ftp, pop, telnet 와 같은 서비스들은 익히 알려진대로 메시지들이 암호화 되지 않은 방식이므로 스니핑과 같은 해킹 기법에 의해 암호가 노출될 수 있습니다. SSH는 이러한 서비스들이 보안에 아주 취약한 점을 대체하기 위하여 나온 원격 로그인 프로그램입니다. <br>일반 로그인 프로그램들이 패킷을 전송할 때 평문으로 전달을 하기 때문에 패스워드를 쉽게 가로챌 수 있는 것에 비해 SSH는 패킷 자체를 암호화 하여 전송하기 때문에 원격 관리에 혁명을 일으킨 프로그램입니다. SSH를 통한 모든 데이타는 암호화되며, 트래픽은 압축되어 더 빠른 전송 효율을 얻을 수 있습니다. SSH 서버를 운영하지 않는 서버 관리자는 보안에 전혀 관심이 없다고도 할 수 있습니다. <br>이 글에서는 ssh1, ssh2 와 호환이 되는 OpenSSH로 설명을 하며 인증키 방식을 설명하지 않고 패드워드 방식으로 설명하려고 합니다. <br><br>OpenSSH 설치하기 <br><br>OpenSSH 의 리눅스 버전은 http://www.openssh.com/portable.html에서 배포되고 있으며 소스와 RPM 패키지로 배포되고 있습니다. <br>대부분의 레드햇 계열 배포판에서는 설치시에 openssh 클라이언트 패키지가 설치 됩니다. <br>사용자들은 서버 패키지만 설치하면 쉽게 ssh 서버를 구축할 수 있습니다.<br>와우리눅스 7.1 파란의 경우 OpenSSH 2.5.0 버전의 ssh 클라이언트가 기본으로 설치가 되며 ssh 서버를 구성하기 위해서는 openssh-server 패키지를 설치하면 됩니다. 와우리눅스 7.0 까치 사용자들은 아래의 패키지를 설치하여 업그레이드 하면 됩니다. <br><br><span style="BACKGROUND-COLOR: #999999"><span style="BACKGROUND-COLOR: #c0c0c0">#rpm -Uvh openssh-2.9p2-1.i386.rpm <br>#rpm -Uvh openssh-server-2.9p2-1.i386.rpm <br>#rpm -Uvh openssh-clients-2.9p2-1.i386.rpm</span> </span><br><br>와우리눅스 7.1 파란의 경우, openssl 패키지와의 의존성 문제로 업그레이드가 안될 것입니다. 이러한 문제는 소스 패키지를 재빌드 하여 설치하면 해결 됩니다.<br><br><span style="BACKGROUND-COLOR: #c0c0c0">#rpm --rebuild openssh-2.9p2-1.src.rpm <br>#cd /usr/src/redhat/RPMS/i386/ <br>#rpm -Uvh openssh-2.9p2-1.i386.rpm <br>#rpm -Uvh openssh-server-2.9p2-1.i386.rpm <br>#rpm -Uvh openssh-clients-2.9p2-1.i386.rpm</span> <br><br>서버 실행 <br>ssh 서버를 구축하기 위해서는 아래의 패키지를 설치합니다. ssh 서버는 22번 포트를 사용합니다. <br><br><span style="BACKGROUND-COLOR: #c0c0c0">#rpm -Uvh openssh-server-2.9p2-1.i386.rpm <br>#/etc/rc.d/init.d/sshd start</span> <br><br>를 하여 OpenSSH 서버를 실행 시킵니다. 이제 ssh 서버가 실행중인 상태입니다. 아래와 같이 하여 ssh 서버가 실행중임을 확인 할 수 있습니다. <br><br>openssh 서버를 xinetd 서버로 운영하기 <br><br>/etc/xinet.d/아래에 ssh 이름으로 파일을 만들고 아래와 같이 작성합니다. <br><span style="BACKGROUND-COLOR: #c0c0c0">service ssh { disable = no flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_failure += USERID }</span> <br><br>ssh 로 원격 컴퓨터에 접속하기 <br>telnet 를 사용하여 telnet 서버에 접속하는 것처럼 ssh 명령을 사용하여 ssh 서버에 접속합니다. <br>ssh 를 사용하는 방법은 꽤 쉽습니다. telnet 의 사용방법과 동일하며 유연한 많은 옵션을 지원합니다. 자세한 것은 man ssh 하시기 바랍니다. <br><br>다음과 같이 접속할 수 있습니다. <br>접속하고자 하는 호스트의 계정은 -l 옵션을 사용하여 접속하거나, <br>@ 로 계정과 서버주소를 구분하여 접속합니다. <br><br><span style="BACKGROUND-COLOR: #c0c0c0">#ssh -l 유저네임 서버주소<br>#ssh 유저네임@서버주소</span><br><br>만약, host 에 처음 연결하는 것이라면 유저 인증을 하기 위해 아래와 같은 메시지 프롬프트를 보게 됩니다. <br><span style="BACKGROUND-COLOR: #c0c0c0">The authenticity of host 'hostname' can't be established. <br>RSA key fingerprint is 3b:60:57:4e:6c:59:5a:99:cf:41:d5:e0:14:af:0d:a1. <br>Are you sure you want to continue connecting (yes/no)? <br></span>. <br><br>보안 파일 전송 SCP 사용하기 <br>ssh는 또한 보안적인 방법으로 인터넷에서 파일 전송을 하는 방법을 제공합니다. 이 프로그램은 scp (Secure Copy)라고 하며 scp 의 사용방법은 매우 단순합니다. <br><br><span style="BACKGROUND-COLOR: #c0c0c0">#scp user@host:filename user@host:filename</span> <br><br>ssh 를 이용하여 다른 호스트에 로컬 파일을 복사하려면, <br><br><span style="BACKGROUND-COLOR: #c0c0c0">#scp linux.gif junilove@junilove.nameip.net:</span> <br><br>이렇게 하면 현재 디렉토리에 있는 freeos.gif 파일이 junilove.nameip.net 호스트의 junilove 유저의 디렉토리에 복사가 됩니다. 끝에 있는 ':' 은 반드시 써주어야 합니다. <br>반대로 호스트에 있는 파일을 로컬 디렉토리에 복사하려면,<br><br><span style="BACKGROUND-COLOR: #c0c0c0">#scp junilove@junilove.nameip.net:linux.gif ./</span><br><br>합니다. 이렇게 하면 junilove.nameip.net 의 junilove의 유저의 홈디렉토리에 있는 linux.gif 파일을 로컬 디렉토리에 복사합니다. <br>scp 에 '-r' 옵션을 사용하여 하위 디렉토리까지 복사할 수 있습니다. <br><br>윈도우용 ssh 클라이언트 <br><br>리눅스 시스템에서는 ssh 클라이언트가 설치되어서 바로 사용할 수 있지만 윈도우 시스템에서는 별도의 ssh 지원 클라이언트를 설치해야 합니다. 필자가 사용한 PuTTY 는 ssh2 프로토콜을 지원하는 공개소프트웨어이며, 소스도 공개되어 있습니다. 이 외에도 scp 클라이언트로 pscp.exe 가 배포되고 있습니다. 다만 한글지원이 잘 되지 않는다는 문제점이 있습니다. 이외에도 쉐어웨어로 많이 사용되는 SecureCRT 가 있습니다. <br>먼저 http://www.chiark.greenend.org.uk/~sgtatham/putty/ 에서 PuTTY를 받아서 설치합니다. 별도의 설치과정은 필요없으며 실행파일을 실행하면 됩니다. <br>처음 실행하면 아래와 같은 화면이 보이며 'Host Name' 부분에 서버주소를 적고 'Protocol' 은 ssh 로 설정합니다. <br>PuTTY 는 기본으로 ssh1 프로토콜을 사용하도록 설정되어 있습니다. 이것을 ssh2 프로토콜으로 변경합니다. <br>이제 'open' 버튼을 클릭하면 연결이 됩니다. 연결이 되면 처음 접속시에는 아래와 같은 화면이 보입니다. yes 를 선택합니다. <br>'login as:' 에 계정이름을 적고 'password:' 에 계정암호를 입력하면 로그인이 됩니다. 쉘 프롬프트에서 exit 를 입력하면 자동으로 로그아웃되며 PuTTY 의 프로그램은 종료됩니다. <br><br>ssh 사용 팁 <br><br>ssh 를 여러가지로 활용하여 사용할 수 있습니다. 더 자세한 것들은 man ssh 를 하여 메뉴얼 페이지를 보십시요. 먼저 아래와 같이 하면 서버에 있는 파일을 로컬로 복사 할 수 있습니다. <br><br><span style="BACKGROUND-COLOR: #c0c0c0">#ssh user@remote.com dd if=remotefilename | dd of=localfiename</span> <br><br>다음과 같이 하면 서버의 파일을 로컬의 /dev/fd0 장치 드라이버에 기록할 수 있습니다. <br><br><span style="BACKGROUND-COLOR: #c0c0c0">#ssh user@remote.com dd if=remotefilename | dd of=/dev/fd0</span> <br><br>아래의 방법은 현재의 디렉토리를 압축하여 서버의 junilove 계정의 홈디렉토리에 my_local_backup.tar.gz 에 기록합니다. <br><br><span style="BACKGROUND-COLOR: #c0c0c0">#tar cfz - . | ssh junilove@yourmachine.com dd of=my_local_backup.tar.gz</span> <br><br>관련 자료 <br><span style="COLOR: #ff0000"><u>http://www.openssh.com/faq.html</u> : <u>OpenSSH FAQ <br>http://kldp.org/HOWTO/mini/html/Compressed-TCP/</u> : <u>압축된 TCP/IP세션을 SSH 같은 도구들로 이용하기 <br>http://kldp.org/KoreanDoc/html/SSH-KLDP/</u> : <u>SSH Howto</u></span> <br><br>글쓴이 : 이종준님 ( junilove@kebi.com ) "Open mind and don't mind!"<br/><br/>tag : <a href="/tag/LINUX" rel="tag">LINUX</a>,&nbsp;<a href="/tag/SSH" rel="tag">SSH</a>,&nbsp;<a href="/tag/scp" rel="tag">scp</a>,&nbsp;<a href="/tag/OpenSSH" rel="tag">OpenSSH</a>,&nbsp;<a href="/tag/SecureCopy" rel="tag">SecureCopy</a>			 ]]> 
		</description>
		<category>LINUX</category>
		<category>LINUX</category>
		<category>SSH</category>
		<category>scp</category>
		<category>OpenSSH</category>
		<category>SecureCopy</category>

		<comments>http://metalbear.egloos.com/3528192#comments</comments>
		<pubDate>Thu, 13 Dec 2007 01:54:58 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
	<item>
		<title><![CDATA[ MySQL 내장 함수 정리  ]]> </title>
		<link>http://metalbear.egloos.com/3521684</link>
		<guid>http://metalbear.egloos.com/3521684</guid>
		<description>
			<![CDATA[ 
  1. 숫자 관련 함수 <br>▶ ABS(숫자) - 절대값 출력. <br>▶ CEILING(숫자) - 값보다 큰 정수 중 가장 작은 수. <br>▶ FLOOR(숫자) - 값보다 작은 정수 중 가장 큰 수[실수를 무조건 버림(음수일 경우는 제외)]. <br>▶ ROUND(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 반올림.(자릿수는 양수,0,음수를 갖을 수 있다.) <br>▶ TRUNCATE(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 버림. <br>▶ POW(X,Y) or POWER(X,Y) - X의 Y승 <br>▶ MOD (분자, 분모) - 분자를 분모로 나눈 나머지를 구한다.(연산자 %와 같음) <br>▶ GREATEST(숫자1,숫자2,숫자3...) - 주어진 수 중 제일 큰 수 리턴. <br>▶ LEAST(숫자1,숫자2,숫자3...) - 주어진 수 중 제일 작은 수 리턴. <br>▶ INTERVAL(a,b,c,d.....) - a(숫자)의 위치 반환 <br>2. 문자 관련 함수 <br>▶ ASCII(문자) - 문자의 아스키 코드값 리턴. <br>▶ CONCAT('문자열1','문자열2','문자열3'...) - 문자열들을 이어준다. <br>▶ INSERT('문자열','시작위치','길이','새로운문자열') - 문자열의 시작위치부터 길이만큼 새로운 문자열로 대치 <br>▶ REPLACE('문자열','기존문자열','바뀔문자열') - 문자열 중 기존문자열을 바뀔 문자열로 바꾼다. <br>▶ INSTR('문자열','찾는문자열') - 문자열 중 찾는 문자열의 위치값을 출력 <br>▶ LEFT('문자열',개수) - 문자열 중 왼쪽에서 개수만큼을 추출.<br>▶ RIGHT('문자열',개수) - 문자열 중 오른쪽에서 개수만큼을 추출. <br>▶ MID('문자열',시작위치,개수) - 문자열 중 시작위치부터 개수만큼 출력 <br>▶ SUBSTRING('문자열',시작위치,개수) - 문자열 중 시작위치부터 개수만큼 출력 <br>▶ LTRIM('문자열') - 문자열 중 왼쪽의 공백을 없앤다. <br>▶ RTRIM('문자열') - 문자열 중 오른쪽의 공백을 없앤다. <br>▶ TRIM('문자열') - 양쪽 모두의 공백을 없앤다. <br>▶ LCASE('문자열') or LOWER('문자열') - 소문자로 바꾼다. <br>▶ UCASE('문자열') or UPPER('문자열') - 대문자로 바꾼다. <br>▶ REVERSE('문자열') - 문자열을 반대로 나열한다. <br>3. 논리 관련 함수 <br>▶ IF(논리식,참일 때 값,거짓일 때 값) - 논리식이 참이면 참일 때 값을 출력하고 논리식이 거짓이면 거짓일 때 출력한다. <br>▶ IFNULL(값1,값2) - 값1이 NULL 이면 값2로 대치하고 그렇지 않으면 값1을 출력 <br>4. 집계 함수 <br>▶ COUNT(필드명) - NULL 값이 아닌 레코드 수를 구한다. <br>▶ SUM(필드명) - 필드명의 합계를 구한다. <br>▶ AVG(필드명) - 각각의 그룹 안에서 필드명의 평균값을 구한다. <br>▶ MAX(필드명) - 최대값을 구한다. <br>▶ MIN(필드명) - 최소값을 구한다. <br>5. 날짜 관련 함수 <br>▶ NOW() or SYSDATE() or CURRENT_TIMESTAMP() - 현재 날짜와 시간 출력 <br>▶ CURDATE() or CURRENT_DATE() -현재 날짜 출력 <br>▶ CURTIME() or CURRENT_TIME() -현재 시간 출력 <br>▶ DATE_ADD(날짜,INTERVAL 기준값) -날짜에서 기준값 만큼 더한다. <br>※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND <br>▶ DATE_SUB(날짜,INTERVAL 기준값) -날짜에서 기준값 만큼 뺸다. <br>※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND <br>▶ YEAR(날짜) -날짜의 연도 출력. <br>▶ MONTH(날짜) -날짜의 월 출력. <br>▶ MONTHNAME(날짜) -날짜의 월을 영어로 출력. <br>▶ DAYNAME(날짜) -날짜의 요일일 영어로 출력. <br>▶ DAYOFMONTH(날짜) -날짜의 월별 일자 출력. <br>▶ DAYOFWEEK(날짜) -날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6)) <br>▶ WEEKDAY(날짜) -날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6)) <br>▶ DAYOFYEAR(날짜) -일년을 기준으로 한 날짜까지의 날 수. <br>▶ WEEK(날짜) -일년 중 몇 번쨰 주. <br>▶ FROM_DAYS(날 수) --00년 00월 00일부터 날 수 만큼 경과한 날의 날짜 출력. <br>▶ TO_DAYS(날짜) --00 년 00 월 00일 부터 날짜까지의 일자 수 출력. <br>▶ DATE_FORMAT(날짜,'형식') : 날짜를 형식에 맞게 출력 <br/><br/>tag : <a href="/tag/MySQL" rel="tag">MySQL</a>,&nbsp;<a href="/tag/내장함수" rel="tag">내장함수</a>,&nbsp;<a href="/tag/함수" rel="tag">함수</a>			 ]]> 
		</description>
		<category>MySQL</category>
		<category>MySQL</category>
		<category>내장함수</category>
		<category>함수</category>

		<comments>http://metalbear.egloos.com/3521684#comments</comments>
		<pubDate>Sat, 08 Dec 2007 15:48:01 GMT</pubDate>
		<dc:creator>곰도리푸</dc:creator>
	</item>
</channel>
</rss>
