오래전 항상 스캔할때는 포토샵에서 TWAIN 을 이용해 스캔을 했었다. 스캔하고 바로 이미지 수정을 이래저래 하기 좋아서였다. 한동안 스캐너 만질일이 없었고, 요즘 스캐너에 딸린 프로그램들이 훌륭해서 기본적으로 이런저런 편집하기도 많이 쉬워져졌다. 그런데 오랜만에 CS5에서 스캔을 한번 해볼까 했더니... 어라? TWAIN이 없네? 아무리 뒤져봐도 없다. 알고보니 기본적으로 포함되어 있지 않았던 것이었던 것이다. 그래서 이래저래 찾아보니 역시 방법이 따로 있었다.
압축을 풀어보면 Optional Plug-Ins 디렉토리안에 위와같이 Win32 와 Win64가 나온다. 하지만 TWAIN 드라이버 플러그인은 32비트에만 들어있다. 우선 Win32 폴더 안에 들어있는 모든 파일을 C:\Program Files (x86)\Adobe\Adobe Photoshop CS5\Plug-ins
디렉토리에 몽땅 카피한다. 추가적으로 64비트를 사용하는 경우 Win64 폴더 내에 있는 모든 파일을 C:\Program Files\Adobe\Adobe Photoshop CS5\Plug-ins
디렉토리로 카피해 둔다.
이제 포토샵 CS5를 실행하도록 한다. 복사하기전에 포토샵을 실행한 경우는 다시 실행하도록 한다. 그리고 64비트를 사용하는 경우 64비트용 프로그램이 아닌 32비트용 포토샵을 실행해야 한다. File -> Import 를 보면 현재 설치된 스캐너가 나타날 것이다. 웹캠이 달린 경우 캠을 포토샵에서 바로 찍는것도 가능하다.
아주 가끔씩, 망할놈의 하드디스크가 망가지거나 잠시 미쳐서 rm * 요따구 명령어를 날려서 InnoDB 데이터 파일을 몽땅 날려먹는 경우가 있다. 삭제된 데이터 파일을 즉시 복구한다면 다행이지만, 무슨 일이 일어났는지 모르거나 무슨 짓을 했는지 모르고 멍때리고 있다가 하드디스크 신나게 긁어놓은 다음에 후회하면 이미 늦은 일. 백업이라도 충실히 해뒀다면 그나마 손실이 적겠지만 이도 저도 없다면 난감해진다. 날아간 데이터는 어쩔수 없다 하더라도 테이블 구조라도 살려야 다시 데이터를 삽질해서 부어넣든 말든 하지. 특히나 InnoDB인 경우는 기존의 MyISAM과 데이터 저장 구조가 틀리기 때문에 로그파일이랑 데이터 파일을 날려버리면 복구는 거의 불가능이다. 뭐 MyISAM도 MYD파일이랑 MYI 파일 날려먹음 마찬가지긴 하지만 이놈의 InnoDB는 모든 테이블들이 몽땅 같이 들어있기 때문에 문제가 더 심각하다. 하지만 frm 파일이 남아있다면 여기에 테이블 구조가 저장되어 있으니 구조만이라도 살릴수 있지 않을까 하는 생각이 들었다. 어째어째 궁리끝에 방법을 찾아냈다. 분명히 적어두지만, 날아간 데이터는 어쩔수 없고 데이터 구조만이라도 복구하기 위한 방법이다.
우선 MySQL의 데이터 디렉토리를 몽땅 다른곳으로 카피해 둔다... 고 해봤자 이미 남은건 껍데기 frm 파일들뿐. 어쨋든 다른곳으로 다 이동시켜둔다. 그리고 새로운 마음으로 MySQL을 새롭게 설치를 한다. 이왕이면 신버전으로... MySQL 돌아가는데 이상 없다면 새로 설치하지 않아도 상관 없다. 이전 MySQL에서 로그인이나 SQL 날리는데 문제가 없었다면 복사해둔 데이터 폴더에서 MySQL 전용 폴더들을 복사해 온다. 그리고 InnoDB로 저장하지 않은 다른 데이터베이스 폴더도 모두 복사해 온다. 그러면 MySQL 유저 정보나 권한등은 그대로 유지된다. 난 FreeBSD 를 굴리고 있으니까 데이터 경로는 /var/db/mysql 이다. 이제 MySQL 로 접속을 해보자.
mysql> use test; mysql> CREATETABLE`test_table`(`idx`INT(3)NOTNULL)ENGINE=MYISAM;
Query OK, 0 rows affected (0.06 sec)
이렇게 아무렇게나 필드 1개짜리 테이블을 만든다. 여기서 테이블 이름은 복구하고자 하는 frm 파일과 동일한 이름을 써야 한다. 그리고 반드시 MyISAM 타입으로 만들어줘야 한다. InnoDB로 만들었다면 테이블 삭제후 다시 만들것. 이제 복사해둔 test_table.frm 파일을 방금 생성한곳에 덮어쓴다.
그리고 다음 명령어를 입력.
mysql> repair table `test_table` use_frm; +-------------+--------+----------+------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +-------------+--------+----------+------------------------------------------------------------+ | test.test_table| repair | note | The storage engine for the table doesn't support repair | +-------------+--------+----------+------------------------------------------------------------+ 1 rows in set (0.01 sec)
이제 mysql> show create table test_table; 요거 한번 날려보시라. 이전 테이블 구조가 전부 살아있을것이다. 그럼 이제부터 데이터 집어넣으러 삽질을... 이건 실수한 각자의 몫이다. T.T
I am the above named person from
Kuwait. I am married to Mr.Abram Morgan, who worked with Kuwait embassy in Ivory
Coast for nine years before he died in the year 2004. We were married for eleven
years without a child. He died after a brief illness that lasted for only four
days.
Before his death we were both born again Christian. since his
death I decided not to remarry or get a child outside my matrimonial home which
the Bible is against. When my late husband was alive he deposited the sum of $2.
5 Million (Two Million and Five Hundred thousand U.S. Dollars) in the bank here
in Abidjan in suspense account.
Presently, the fund is still with the
bank. Recently, my Doctor told me that i have seriouly sickness which is cancer
problem. The one that disturbs me most is my stroke sickness. Having known my
condition I decided to donate this fund to a church or individual that will
utilize this money the way I am going to instruct herein. I want a church that
will use this fund for orphanages, widows, propagating the word of God and to
endeavour that the house of God is maintained.
The
Bible made us to understand that blessed is the hand that giveth. I took this
decision because I don’t have any child that will inherit this money and my
husband relatives are not Christians and I don’t want my husband’s efforts to be
used by unbelievers. I don’t want a situation where this money will be used in
an ungodly way. This is why I am taking this decision. I am not afraid of death
hence i know where I am going. I know that I am going to be in the bosom of the
Lord. Exodus 14 VS 14 says that the Lord will fight my case and I shall hold my
peace.
I don’t need any telephone communication in
this regard because of my health hence the presence of my husband’s relatives is
around me always I don't want them to know about this development. With God all
things are possible. As soon as I receive your reply I shall give you the
contact of the bank here in Abidjan. I want you and the church to always pray
for me because the Lord is my shepherd. My happiness is that I lived a life of a
worthy Christian. Whoever that wants to serve the Lord must serve him in spirit
and Truth. Please always be prayerful all through your life.
Contact me through my e-mail address for more
information’s, any delay in your reply will give me room in sourcing another
church or individual for this same purpose. Please assure me that you will act
accordingly as I Stated herein. Hoping to receive your reply. Remain blessed in
the Lord.
쉽게 파티션을 조절 하려면 Ubuntu 상에서는 gparted 를, Kubuntu 상에서는 qtparted 를 실행하면 그래픽으로 아주 쉽게 파티션을 조절 할수 있다. 파티션 매직에서는 ext3 파티션을 건드리면 매우 불안정 하지만 gparted 에서는 깔끔하게 동작한다.
gparted의 화면.
공식 홈페이지 : http://gparted.sourceforge.net/
시스템에 미리 설치되어 있지 않은 경우엔 gparted 를 설치해야 하는데 설치는 간편하다. ~# apt-get install gparted 요 명령어면 끝이다.
하지만 서버에서 이걸 돌리려고 x-window 시스템에 갖가지 라이브러리를 설치하는건 삽질이다. 그리고 이런 GUI 버전이 아닌 원래의 parted 를 쓰면 된다. 다만 명령어를 모르면 쓰기가 어렵다는 것일 뿐...
우선 어떤 디스크를 어떻게 파티션 할지 부터 고민해야 한다. 시스템에 달려있는 하드디스크를 살펴 보려면
# fdisk -l
Disk /dev/sda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x8045eae3
Device Boot Start End Blocks Id System /dev/sda1 19337 19457 971932+ 82 Linux swap / Solaris /dev/sda2 * 1 6079 48829536 83 Linux /dev/sda3 6080 19336 106486852+ 83 Linux
Partition table entries are not in disk order
위처럼 실행시켜 보면 달려있는 디스크와 파티션 정보가 줄줄 나온다. 간단하게 파티션을 만들어 보자면...
# parted /dev/sdb GNU Parted 1.8.8 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
parted 뒤에 작업 하고자 하는 디스크를 선택해서 넣어주면 된다. 저 상태에서 ? 또는 help 를 입려하면 사용 가능한 명령어가 주루룩 나열된다. 새 하드디스크를 달아놓은 경우라면 우선 mklable 을 사용해서 파티션 테이블 타입부터 지정해 줘야한다.
(parted) help mklabel mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
LABEL-TYPE is one of: aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop (parted)
위처럼 해보면 사용 가능한 레이블이 나오는데, 일반적인 환경(grub 이나 lilo 부트로더를 사용하는)에서는 msdos 로 설정해 주면 된다. 혹시 2TB 이상을 사용하는 경우 gpt 로 설정을 해줘야 하는데 주의할 점은 부트로더를 사용할 수 없으므로 당연히 부팅이 안된다.
(parted) mklabel msdos (parted) (parted) print Model: ATA VMware Virtual I (scsi) Disk /dev/sda: 160GB Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags
print 명령을 해보면 이제 하나의 디스크를 파티션할 준비가 되었다. * parted 는 명령을 주면 실시간으로 디스크를 변경 시킨다. fdisk 처럼 다 설정해놓고 변경하는 방식이 아니므로 주의!
이제 mkpart 명령으로 파티션을 만들면 되는데 파티션의 첫 시작용량부터 마지막 용량까지를 적어주면 된다. 모든 디스크영역을 다 쓰고 싶으면 위의 예에서는 0부터 160기가 까지 적어주면 된다.
(parted) mkpart Partition type? primary/extended? primary File system type? [ext2]? ext3 Start? 0 End? 160giga (parted) (parted) print Model: ATA VMware Virtual I (scsi) Disk /dev/sda: 160GB Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags 1 32.3kB 159GB 160GB primary ext3
(parted) q
~#
이제 파티션이 생성 되었다. 이제 포맷해서 마운트를 하고 사용하면 된다. 파티션을 확인하고 싶으면 제일 위에서 해본대로 fdisk -l 로 확인을 할수 있다. 포멧은 위에서 파티션을 ext3 으로 만들었으므로 mkfs.ext3 명령을 실행해 주면 된다.
~# mkfs.ext3 /dev/hdb1
포맷이 끝나면 원하는 위치에 마운트를 시켜준다.
~# mount /dev/hdb1 /bak
마운트된것을 확인해 보기 위해 ~# df -h
그리고 부팅시마다 자동으로 마운트 시킬려면 /etc/fstab 에다 등록시켜주면 된다. Ubuntu 에서는 UUID가 필요한데 확인하는 방법은 ~# vol_id /dev/sdb1 를 입력하면 UUID를 확인할 수 있다.
이외에도 parted 는 아주 강력한 기능들이 많이 있다. 파티션 크기 조절 및 파티션 복사, 이미지 뜨기 등등의 수많은 기능들이 있다. 자세한 것은 다음의 메뉴얼 페이지를 참고.