Showing posts with label Sysadmin. Show all posts
Showing posts with label Sysadmin. Show all posts

HOWTO backup files, folders, disk drivers, full system

Линүкс системтэй ажилдаг хүмүүс, админ-уудад мэдэж байвал зохих нэг зүйл бол мэдээлэл (файл, гэх мэт ) нөөцлөх, нөөцөлсөн архив файлаа буцааж сэргээх үйлдэл гэж боддог юм. Өнөөдөр энэ талаар хийсэн тэмдэглэлүүдээ харж байгаад нэгтгээд жаахан бичий. Мэдээж өөрийн гараар хийж үзсэн, байнга хэрэглэдгээсээ л бичнэ. Эхлээд доорх хэдэн команд, хэрэгслүүдийг нэг google -ээд сонирхоодохоорой.

- Command-line based:
dd
dump
cpio
tar
rsync
cp
- Text-based:
Ghost for Linux (g4l)
Amanda
Taper
- GUI-based:
KDat
PerfectBackup

Алийг нь сонгох вэ? гэдэгийн хувьд хэрэглэгчийн л үзэмж гэдэг нь мэдэх хэрэг гэж бодож байна. Тэгэхдээ авсаархан хэрэгсэл хайж байгаа бол command-line based хэрэгсэлүүд, хэрэглэгчид хялбар ойлгогдохоор, ердийн хэрэглэгчдэд бол GUI-based болон Text-based хэрэгсэлүүд, Сүлжээгээр дамжуулан болон алсаас удирдан нөөцлөх үйлдлийг хийх бол command-line based хэрэгсэлүүд сонгох нь зүгээр болов уу.

Нөөцлөлт хийж болохоор командуудаас ашиглаад нэг жижигхэн shell script бичээд л нөөцлөх үйлдэл хийдэг өөрийн хэрэгсэлтэй ч болох боломжтой. Жишээ нь “cp”, “rsync”, “tar” командууд ашиглаад хамгийн амархан нөөцлөгч тоол хийж үзий. Нөөцлөх үйлдэл хийх командуудийг доорх байдлаар бичиж болно.

# cp -a src dest
(a - параметр нь архивийн горим, "dpR" гэсэн 3 параметрүүдийн хослолтой адилхан.)
# rsync -a src dest
(a - параметр нь архивийн горим, "rlptgoD"гэсэн 7 параметрүүдийн хослолтой адилхан.)
# tar -zcf backup-file.tar.gz src
(z- gunzip, c- TAR файл үүсгэх.)

Одоо бид дээрх командийн аль нэгийг нь shell script болгоод, тэгээд дараа энэ script-ээ CRON-оос цагаар удирдагдаж ажилдаг болгоод л байнгын нөөцлөх үйлдэл хийдэг амархаан хэрэгсэлтэй болчихлоо. Энэ script дээрээ “TAR” ашиглаад нөөцлөлт хийсэн файлуудаа архив болгоод тэгээд нөөц файлууд хадгалахаар бэлдсэн диск драйвер рүү хуулах үйлдэл нэмээд л бүүр бүрэн гүйцэд гэхээр нөөцлөгч хэрэгсэлтэй болж байна. Ийм аргаар WEB, MAIL, DATABASE серверүүдийн дата файлуудыг байнга нөөцлөлт хийж болно. Дамаа “rsync”-ийг сонирхоороо. Урд нөөцлөлт хийсэн файл, шинээр нөөцлөлт хийж байгаа файлуудыг харьцуулаад, зөвхөн өөрчлөлт орсон файлуудыг л нөөцлөлт хийнэ, алсаас удирдаад нөөцлөлт хийх боломжтой гэх мэтээр давуу тал ихтэй.

Disk driver-ийг бүхлээр нь, өөрөөр хэлбэл системийг бүхлээр нь нөөцлөлт хийж авах талаар 3 арга бичий гэж бодож байна. 3-уулаа миний гараар шалгагдсан болно.

1. "tar" comand based
2. "dd" command based
3. Ghost for Linux "g4l"

1. "tar" based backup.

Энэ арга бол их энгийн, ердөөсөө Линүкс системийн бух хавтас, файлуудыг "*.tar.gz" файл болгоод л авах арга юм.
Нөөцлөлт хийх дараалал:
- Эхлээд нөөцлөх үйлдэл хийж авах шаардлагагүй хавтаснуудийг тодорхойлох. Жишээ нь системийн файл хадгалдаг хавтас “/proc” (энэ хавтсан дахь файлууд бол систем ажиллаж байхад л үүсдэг, линүкс цөмийн өгөгдлийн бүтцийн файлууд юм), “/mnt”, “/media” (системийн драйверүүд), “/tmp”, за тэгээд нөөцлөх үйлдэл хийж авах шаардлагагүй хавтас бас хэрэггүй байх, гэх мэтээр тодорхойлж авна.
- За тэгээд л “TAR” командаа шаардлагатай параметртэй нь бичээд л, ENTER дарахад нөөцлөх үйлдэл хийнэ дээ. Жишээ нь доорх командийг оруулаад үзээрэй.
# tar -zcvpf /archive/backup-`date'+%d-%B-%Y'`.tar.gz --directory / --exclude=proc --exclude=mnt --exclude=tmp --exclude=archive .

Тайлбар :
---- “-z” – Gunzip файл үүсгэх, “-c” TAR төрлийн архивийн файл үүсгэх, “-p” - Файлуудын шинж чанарыг хадгалж үлдэх, буцааж сэргээх үйлдэл хийхэд тэр хэвээр нь буулгана, “-v” - Үйлдэл хийгдэж буй файл дэлгэцэнд хэвлэгдэх.
---- `date'+%d-%B-%Y'` - систэмийн цагийг хэвлэх командын гаралтийг '%d-%B-%Y' хэлбэрийн формат бүхий гаралттайгаар нөөцлөх үйлдэл-ъ гэсэн тэxт-д нэмээд нөөцлөх үйлдэл архив файлын нэр бэлэн болно.
---- `` - дотор бичсэн линүкс команд ажиллаад үр дүнг текст хэлбэрээр буцаана.
---- “--directory” – TAR үүйлдлийнхамгийн эхлэл хавтсыг зааж өгөх
---- “--exclude” – Нөөцлөлт хийхгүй хавтасыг зааж өгөх
---- “.” тухайн хавтаснs бoх файлыг нөөцлөх үйлдэл хийхийг зааж өгөх

Дээрх үйлдлийг буцааж задлах команд бичвэл:
# tar -zxvpf /archive/backup-20-February-2007.tar.gz

Тайлбар: Энд бидний мэдэхгүй архив файлыг задлах үйлдлийг зааж өгөх “-x” параметр л байна. Нөөцлөлт хийсэн архивийн файл дотроос ямар нэг файл эсвэл хавтас хайх хэрэгтэй бол доорх командыг оруулах ба нөөцлөх үйлдэл хийсэн бүх хавтас, түүн доторх бүх файлууд жагсаагдан хэвлэгдэх ба тэгээд тэндээсээ файл хайна.
# tar -ztvpf /archive/backup-20-February-2007.tar.gz
# tar -ztvpf /archive/backup-20-February-2007.tar.gz | grep -i "search-file"


2. "dd" команд ашиглаж диск драйверыг тэр чигээр нь хуулан авах.

Дэлгэрэнгүй мэдээллийг “man dd” гээд үзээрээ. Энд бид 2 адилхан дискийг нэгнээс нь нөгөөд тэр чигээр нь хуулах үйлдэлд ашиглах болно.

Үйлдлийн дараалал:
- Хуулж авах эх дискийг "primary master" болгоод, хуулагдах дискийг "secondary master" байхаар бодож залгана.
- Компьютерыг асааж, GNOPPIX зэрэг линүкс live CD, DVD -нээс системийг эхлүүлнэ.
- SU эрхээр үйлдлийг хийнэ, команд оруулахад бэлдэнэ
- fdisk -ээр дискнүүдын мэдээллийг харна
# fdisk -l

Жишээ нь бидний тохиолдолд эхний диск "/dev/hda", дараах диск нь "/dev/hdb" гэсэн байдлаар системд танигдсан байг. Мэдээж хуулах, хуулагдах диск мөн эсэхийг дахин дахин сайн шалгаарай. 2 дискээ таниулж (mount /dev/hda /folder) байгаад дахин дахин шалгаарай.
- За хуулж авах, хуулах дискээ тогтоосон бол таниулсан дискээ “umount”-аар системээс устгана.
# umount /dev/hda
# umount /dev/hdb

- "dd" командаар хуулахдаа блокын хэмжээг нь гараар оруулж өгч болдог ба тэр хэмжээ нь том байх тусмаа хурдан хуулна, тиймээс тэр хэмжээг хэдээр тогтоохыг тооцоолохын тулд "fdisk -l"-ээр хатуу дискнийхээ хэмжээг хэдэн байт болохыг харж болно.
# fdisk -l /dev/hda

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Дээрх тохиолдолд хатуу дискний цэвэр хэмжээ “80026361856” байна, за энэ тоонд үлдэгдэлгүй хуваагдахаар тоо 512, 1024, 2048, 4096, ... хэмжээнүүдээс сонгоно. Заримдаа энэ дискний нийт хэмжээ дээрх тоонуудад цэвэр хуваагдахгүй бол хамгийн бага хэмжээ болох 512 -ийг сонгоорой. (Миний хувьд би голдуу 512 -ийг ашиглаж байсан, удаан ч найдвартай гэдэг үүднээс.)

- Нөөцлөлт хийх командаа оруулаад ENTER
# dd bs=4096 if=/dev/hda of=/dev/hdb

bs=BYTES : force ibs=BYTES and obs=BYTES
if=FILE : read from FILE instead of stdin
of=FILE : write to FILE instead of stdout

Тэмдэглэл: Би энэ үйлдлийг яг адилхан 2 хатуу диск ашиглаж байгаа тохиолдолд л хэрэглэж байсан юм, өөр хэмжээтэй хатуу дискний тохиолдолд болно гэж уншиж байсан, хуулж авах диск нь том байх хэрэгтэй нь ойлгомжтой юм. Том хэмжээтэй дискэн дээрээ нөөцлөх үйлдэл хийж авах дискнийхээ хэмжээтэйгээр яг адилхнаар хуваалт “partition” үүсгээд, тэгээд нөөцлөх үйлдэл хийх нь дээрх үйлдэлтэй адилхан. Хуваалт хийхдээ “fdisk”-ийг ашиглаарай.

3. GHOST for Linux (g4l)

Эхлээд энэ аргаар хэрхэн нөөцлөх үйлдэл хийх талаар товчхон бичвэл: Ажиллаж буй сервер, линүкс компьютерийг унтраах шаардлагатай. "g4l" бүхий боот хийдэг CD-нээс нөөцлөх үйлдэл хийх компьютерт дээрээ систем уншуулж ороод, DHCP серверээс IP хаяг авч, тухайн сүлжээн дэх FTP серверт нөөцлөх үйлдэл хийсэн архив файлыг хуулна. DHCP, FTP сервер байх шаардлагатай. Үлгэр шиг л юм болж байна уу, хэ хэ хэ
Жишээ болгоод А компьютерын “/dev/hda” диск драйверыг бүхлээр нь нөөцлөх үйлдэл хийж "my-backup-20070101.gz" гэдэг файл үүсгээд, "192.168.200.1" IP хаяг бүхий FTP серверийн "backup" гэдэг хавтсанд хуулах үйлдлийг авч үзий.

Ажлийн дараалал:

1. Интернетээс “g4l” -ийн ISO image -ийг татаж авна. (Сүүлийн хувилбар нь "g4l-v0.23.iso" гэж байгаа)
Бас баримт бичгийн файлууд ч байгаа, эхлээд баримт бичгийн файлуудыг нь уншаад, google -дээд жаахан мэдээлэл толгойдоо хийж аваараа.
http://sourceforge.net/project/showfiles.php?group_id=119810

2. Татаж авсан "g4l-XXXX.iso" файлаа CD дээр боот хийж болох байдлаар бэлдэнэ.

3. DHCP сервер, файл хуулж болохоор FTP сервер бэлдээд, энэ 3 компьютерээ нэг сүлжээнд холбоно. Мэдээж хоорондоо холбогдох байдлаар “subnet mask” болон бусад сүлжээний тохиргоог хийнэ. Энд хэрэглэх жишээнд дараах байдлаар тохируулы гэж үзий.
- DHCP IP : 192.168.200.10 -192.168.200.20
- FTP server address : 192.168.200.1

4. Бэлдсэн "g4l" бүхий боот хийдэг CD-ээ нөөцлөх үйлдэл хийх компьютерт хийж, системийг шинээр ачаал

5. За тэгээд систем уншиж ороод, IP хайг автоматаар DHCP -ээс хийгдэнэ, тэгээд команд оруулж болохоор дэлгэц нээгдэх болно. Доорх "g4l" командыг параметрүүдтэй нь оруулна.

# ./g4l with arguments ($1, $2, ... )
$1 : FTP серверийн IP хаяг (192.168.200.1)
$2 : Нөөц файлын нэр болон өргөтгөлийн хамт (image.gz)
$3 : FTP серверт хандах бичих эрх бүхий хэрэглэгчийн нэр, нууц үг ('-u user1 -p pass1')
$4 : DHCP (default: enable), нөөцлөлт хийхээр бэлдэж буй компьютерт хэрэглэх IP хаяг DHCP серверээс авахыг зааж өгөх флаг.
$5 : Нөөц файлыг хуулах FTP сервер дээрх хавтасны нэр (default : img)
$6 : Сүлжээнд холбогдох сүлжээний интерфейсийн нэр (default : eth0)
$7 : reboot – Нөөцлөлт дуусаад “reboot” хийх эсэхийг заах флаг (default: not)

Бидний жишээнд бол:
./g4l 192.168.200.1 my-backup-20070101.gz '-u bayar -p pwd' dhcp backup eth0

Тайлбар бараг хэрэггүй гэхээр тодорхой харагдаж байгаа гэж бодож байна. “default” параметрүүд таны оруулахтай адилхан бол оруулаад хэрэггүй.

6. За эндээс эхлээд их амархан болно. Текст цэс бүхий дэлгэц нээгдэх ба тэрэн дээр тохиргооны хэсэгт таны оруулсан параметрууд суугдсан байх болно. Үндсэн цэснээс харж байгаад л таны тоглолт эхлэнэ. Жишээнд "/dev/hda" –ийг нөөцөлж, FTP серверт хуулахаар байгаа тул доорх сонголтуудыг хийнэ.

- RAM Mode (ANY filesystem,every bit, local+ftp)
- Network use (Backup/restore to/from network)
- Backup (Backup drive/partition to FTP server)
- Select from : hda
Ok
(Нөөцлөх үйлдэл эхлэнэ, дуустал нь хүлээ !!! )



7. Дуусав.

http://sourceforge.net/projects/g4l
http://www.howtoforge.com/back_up_restore_harddrives_partitions_with_ghost4linux

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

За дээрх 3 аргыг товчхон бичвэл нэг иймэрхүү юм болж байна. Мэдээж өөрсдөө дэлгэрүүлж судлаад, ажилдаа хэрэглэх нь зүйтэй болов уу. Асуух юм байвал мэдээж мэддэг чаддаг бол хэлж өгөхдөө дуртай байх болно.

Terminal Emulator (Terminal application, term, or tty)

SSH, Telnet зэрэг протоkолууд ашиглаад Unix, Linux ... төрлийн үйлдлийн системд холбогдож, улмаар тухайн системтэй ажиллах боломжоор хангах "command-line interface" бүхий хэрэгсэл юм. Голдуу л MS-Windows -өөс Unix төрлийн системд холбогдож ажиллахад зориулагдана даа. Аюулгүй байдал, дамжуулж буй өгөгдлийн хамгаалалт зэрэгээсээ хамаараад голдуу SSH -д суурилсан хэрэгсэлийг нь ихэвчлэн хэрэглэж байна.

Жишээ нь доорх хэдийг сонирхоороо, би эхний 3 -ийг нь ашиглаж байсан, ашигладаг юм. Давгүй нь PuTTY, Япон тэмдэгт, тексттэй ажиллах шаардлага байдаг болохоор TeraTerm -ийг нь голдуу ашиглана. Cygwin нь MS-Windows дээр яг л Unix төрлийн систем дэр ажиллаж байгаа юм шиг болгох ч дэндүү том нүсэр тул бараг ашигладагуй юм.


-----

MS Windows -ээс Unix төрлийн системтэй ажиллахад доорх 2 хэрэгсэл байхад ч илүүдэхгүй шүү.

Free SFTP, FTP and SCP client for Windows
http://winscp.net/eng/index.php

VNC - the original cross-platform remote control solution
http://www.realvnc.com/

Screenshot: Tera Term
TeraTerm

Howto install qmail

"qmail " бол UNIX гэх мэт үйлдлийн системүүдэд зориулагдсан Internet Mail Transfer Agent (MTA) юм. Ер нь бол маш том ажил, маш ихээр хэрэглэгддэг, ... доорх линкээр ороод дэлгэрүүлж сайхан уншаарай.

http://www.qmail.org
http://www.lifewithqmail.org

2 жилийн өмнө QMAIL майл сервер суулгаж байсан юм. Тэгэхэд хийсэн тэмдэглэлийг жаахан засаад тавилаа.

Анхаар: Sendmail, Postfix болон бусад майл серверүүдээс системд идэвжсэн байгаа бол зогсоох, хэрэглэхгүй бол бүүр аваад хаясан дээр шүү.

Ажилласан серверийн хувьд:
- Turbo Linux 8 (kernel-2.4.x)
- Red Hat Enterprise Linux AS 2.1 (kernel-2.4.x)

Эхлээд доорх линкээр ороод эсвэл нэрээр нь хайж олоод файлуудыг татаад аваараа.

1.QMAIL
ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz

2.pbs4q
http://mambo.kuhp.kyoto-u.ac.jp/~masahiro/PbS4q/pbs4q-0.2.1.tar.gz

3.Localtime path
ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch

4.TCP-SERVER
http://cr.yp.to/software/ucspi-tcp-0.88.tar.gz

5.Checkpassword
http://cr.yp.to/software/checkpassword-0.90.tar.gz

6.cdb
http://cr.yp.to/cdb/cdb-0.75.tar.gz

За тэгээд татаж авсан файлнуудаа задлаад, суулгаж эхлэнэ дээ.

"/usr/local/src" хавтаснаас суулгах ажлыг эхлүүлий гээд

# tar zxvf qmail-1.03.tar.gz
# cp qmail-date-localtime.patch /usr/local/src/qmail-1.03
# cd /usr/local/src/qmail-1.03
# mkdir /var/qmail
# chmod 755 /var/qmail

/usr/sbin/groupadd -g 900 nofiles
/usr/sbin/groupadd -g 901 qmail
/usr/sbin/useradd -g nofiles -u 902 -d /var/qmail/alias alias
/usr/sbin/useradd -g nofiles -u 903 -d /var/qmail qmaild
/usr/sbin/useradd -g nofiles -u 904 -d /var/qmail qmaill
/usr/sbin/useradd -g nofiles -u 905 -d /var/qmail qmailp
/usr/sbin/useradd -g qmail -u 906 -d /var/qmail qmailq
/usr/sbin/useradd -g qmail -u 907 -d /var/qmail qmailr
/usr/sbin/useradd -g qmail -u 908 -d /var/qmail qmails

# cat /etc/passwd

(Системийн бүх хэрэглэгчийн attribute файл шалгах)

# patch -p1 < qmail-date-localtime.patch
# make
# make man
# make setup
# make check

./config-fast xxxxx.ccccccc.com

(xxxxx.ccccccc.com : Mail DNS -iig solikh. Jishee ni "myfreemail.com")

# cd /var/qmail/alias
# touch .qmail-root .qmail-postmaster .qmail-mailer-daemon
# chmod 644 .qmail*

.qmail-root (дотор шинэ хэрэглэгч нэмэх)

/var/qmail/control/

(Dotor uussen doorkh file-uudiig uuriin mail DNS bukhii nereer zasvar khiikh.)

Jishee ni:
me
localhost
xxxxx.ccccccc.com

rcpthosts 
localhost
xxxxx.ccccccc.com

defaultdomain
localhost
xxxxx.ccccccc.com

Сервэрт бүртгэгдсэн хэрэглэгч болгонд "Maildir" гэдэг хавтас үүсгэх хэрэгтэй, өөрөөр хэлбэл qmail -ийн хэрэглэх хавтас (шинээр ирсэн, устгаагүй mail файлууд).
$ /var/qmail/bin/maildirmake $HOME/Maildir
echo ./Maildir/ > ~/.qmail

$ /bin/su -
# /var/qmail/bin/maildirmake /etc/skel/Maildir;
# echo ./Maildir/ > /etc/skel/.qmail

# cp /var/qmail/boot/home /var/qmail/rc

# qmail-start ./Maildir splogger qmail

Sendmail суусан байгаа бол backup хийнэ.
# mv /usr/lib/sendmail /usr/lib/sendmail.bak
# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
# chmod 644 /usr/sbin/sendmail.bak
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

TCP-SERVER install

# tar zxvf ucspi-tcp-0.88.tar.gz -C /usr/local/src
# cd /usr/local/src/ucspi-tcp-0.88
$ make
$ make setup check

Ccheckpasswd install

# tar zxvf checkpassword-0.90.tar.gz
# cd checkpassword-0.90
# make
# make setup
# make check

/etc/tcp.smtp
(dotor doorkh mayagaar IP zokhitsuulaltuudiig khiikh.)

192.168.1.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
172.17.1.:allow,RELAYCLIENT=""
xxx.yyy.zzz.sss:allow,RELAYCLIENT=""
..............

pbs4q install

# tar zxvf pbs4q-0.2.1.tar.gz
# cd /usr/local/src/pbs4q
# make
# make install

Linux achaalakh bolgond QMAIL start khiikhiin tuld "/etc/rc.d/rc.local" dotor nemelt khiine.

##start qmail
csh -cf '/var/qmail/rc &'

##qmail-smtpdl

/usr/local/bin/tcpserver -H -D -l xxxxx.ccccccc.com \
-x /etc/tcp.smtp.cdb \
-c 80 -u 903 -g 900 -v 0 smtp \
/usr/local/bin/rblsmtpd -r relays.ordb.org \
/usr/local/bin/pbs4q2_smtp \
/var/qmail/bin/qmail-smtpd \
2>&1 | /var/qmail/bin/splogger smtpd 3 &

##qmail-pop3d

/usr/local/bin/tcpserver -H -R -D -l xxxxx.ccccccc.com -c 80 -u 0 -g 0 \
-x /etc/tcp.smtp.cdb \
-v 0 110 \
/var/qmail/bin/qmail-popup \
dns-srv.win-group.co.jp \
/bin/checkpassword \
/usr/local/bin/pbs4q1 \
/var/qmail/bin/qmail-pop3d Maildir \
2>&1 | /var/qmail/bin/splogger pop3d 3 &

# shutdown -r now

За дуусав.

Starting SVN server with xinetd

Subversion home :
http://svn.subversion.com/
Subversion document folder:
http://subversion.tigris.org/servlets/ProjectDocumentList

-------------------------------------
My system : Redhat EL4 Linux with kernel 2.6.9
-------------------------------------
1. Check/install svn packages

# svn
svn
svnadmin
svnversion
.....

# which svn
/usr/bin/svn

# which svnserve
/usr/bin/svnserve

2. Adding svn new user
# adduser svnversion

3. Create config file "/etc/xinetd.d/svnserve"
# vi /etc/xinetd.d/svnserve

#
# Subversion server
# service svnserve
{
socket_type = stream
protocol = tcp
user = subversion
wait = no
disable = no
server = /usr/bin/svnserve
server_args = -i -r /home/svn
}
.... save

4. Restart xinetd

5. Create repository
# su subversion% svnadmin create /usr/local/svn/my-projects

6. Change config file "../SVN/rep../conf/svnserve.conf"
# vi /home/svn/my-rep../conf/svnserve.conf

[general]
anon-access = readwritenone (default read)
auth-access = readwritenone (default write)

# /etc/init.d/xinetd restart