วันนี้ผมได้ทำ mirror server โดยใช้ vsftpd (http://vsftpd.beasts.org/) และ Emirror (http://sourceforge.net/projects/emirror/)
วิธีการติดตั้ง vsftpd สามารถดูได้ที่นี่ http://rd.cc.psu.ac.th/content/view/20/46/
ไฟล์ /etc/vsftpd.conf มีสิ่งที่อาจต้องเพิ่มเติมคือ
# เพื่อเปลี่ยนโฮมของ ftp จาก /var/ftp ไปที่ /home/ftp และควรแก้ home ของ ftp user ให้เป็นที่ /home/ftp ด้วย
anon_root=/home/ftp
# กำหนดจำนวน clients สูงสุดที่เข้าใช้งานได้
max_clients=50
# กำหนดจำนวน concurrent session ต่อ IP address
max_per_ip=4
# สร้าง banner ที่เมื่อ user login จะเห็นข้อความในไฟล์นี้
banner_file=/etc/vsftpd/banner_file
หรือต้องการให้มีข้อความส่งถึงผู้ใช้ในแต่ละไดเรกทอรี สามารถทำโดยสร้างไฟล์ .message แต่ต้องเปิด option นี้ด้วย
dirmessage_enable=YES
สำหรับ Emirror ต้องแก้ไขไฟล์ general.cfg ที่ /etc/emirror เช่นตัวอย่างนี้
[general] Download-url: ftp://ftp.yourdomain.com/pub Parent: /home/ftp/pub/ Parent-Format: None Output-directory: /home/httpd/html/mirrors Output-format: HTML Tries: 5 Wait: 30 Email: - Max-parallel: 6 Recursive: Yes Follow-Symlinks: Yes Continue: Yes Username: anonymous Password: anonymous@localhost Error-MailCmd: mail -s "EMirror Error Report" ftp@localhost Mail-Users: /etc/emirror/email-addresses Mail-User-Cmd: mail -s "EMirror EMail-Information" Log-Template: /etc/emirror/logfile.template Index-Template: /etc/emirror/index.template Index-Directory: /home/httpd/html/mirrors Summary-Template: /etc/emirror/summary.template
สิ่งที่ควรแก้ไขมีดังนี้
Download-url: ftp url ของเรา
Parent: ไดเรกทอรีที่เก็บไฟล์ในเซิร์ฟเวอร์
Output-directory: ไฟล์ output html ของผลการทำของโปรแกรมแล้ว
Output-format: รูปแบบของการ output
Max-parallel: conncurent ftp session
Continue: ทำการเขียนไฟล์ต่อจากเพิมที่มีอยู่แล้ว
Username: anonymous
Password: anonymous@localhost
Error-MailCmd: mail -s “EMirror Error Report” ftp@localhost
Mail-Users: /etc/emirror/email-addresses
แก้ไขไฟล์ /etc/emirror/email-address โดยใส่อีเมลที่ต้องการให้ Emirror ส่งรายงานถึงหลัง list: เช่น
list: name@email.com
ใน /etc/emirror/unused จะมีตัวอย่างของไฟล์ config ของการ mirror จาก site ต่างๆ แต่หากต้องการเช่น ผมต้องการ mirror CentOS 4.6 สามารถทำโดยการสร้างไฟล์ centos4.6.cfg โดยใส่คำสั่งต่อไปนี้
[mirror] Title: CentOS Linux 4.6 (ISOs) Category: Distributions Url: ftp://mirrors.kernel.org/centos/4.6/isos/ Parent: /home/ftp/pub/linux/distributions/centos/4.6/isos Download-url: ftp://ftp.engr.tu.ac.th/pub/linux/distributions/centos/4.6/isos Output-file: cenos4.6.html Exclude: HEADER.*|SRPMS|alpha|ia64|s390|s390x Recursive: Yes
อธิบายส่วนที่สำคัญได้ดังนี้
Url: เป็น url ที่ต้องการ mirror
Parent: ไดเรกทอรีที่ต้องการเก็บไฟล์ที่ mirror มา
Download-url: ตำแหน่งของ ftp ของไฟล์ที่ mirror มาในเครื่องของเรา
Exclude: ไฟล์หรือไดเรอกทอรีที่ไม่ต้องการ mirror
รายละเอียดอื่นๆ สามารถดูได้โดยใช้คำสั่ง man emirror สำหรับ
วิธีการเรียกใช้งาน emirror ทำได้ดังนี้
emirror -v --passive -c /etc/emirror/general.cfg -d /etc/emirror/active
-v : verbose --passive : Passive mode -c : generation configuration file -d : configuration file directory
เรื่องตลกอย่างหนึ่งเกิดขึ้นหลังจากที่ผมติดตั้งทุกอย่างเรียบร้อย เพราะผมพยายามที่จะ mirror ไฟล์จาก Thai National Mirror เพราะใช้ ftp protocol ช้ากว่า http protocol มาก ทำให้ผมต้องหันมาใช้ wget ในการช่วยโหลดไฟล์ด้วย โดยใช้คำสั่งดังตัวอย่างนี้
wget --mirror --no-directories --no-host-directories http://mirror.in.th/centos/5.1/isos/x86_64/
ต้องขออภัยที่ไม่ได้ลงรายละเอียดมากนักครับ 🙂