หน้าเว็บ

วันอังคารที่ 4 มกราคม พ.ศ. 2554

วิธี FTP แต่ไม่เอา (exclude) บาง folder

มีรุ่นน้องถามมาว่าถ้าอยาก FTP เอาไฟล์แต่ว่าไม่อยากเอาโฟลเดอร์ที่มีชื่อบางอย่าง เช่น โฟลเดอร์ .svn ที่มีอยู่ในทุกๆโฟลเดอร์ย่อยมาด้วยจะทำยังไง

จริงๆก็คงทำได้หลายวิธี แต่วิธีที่ผมชอบสุดคงเป็น wget ครับ

wget -r ftp://url/folder --exclude-directories="*/foldername"


เช่น ถ้าต้องการ copy ตั้งแต่โฟลเดอร์ xyz ลงไปทั้งหมด แต่ไม่เอาโฟลเดอร์ .svn ก็ทำดังนี้

wget -r ftp://abc.com/xyz --exclude-directories="*/.svn"


ในกรณีที่ต้องมี username, password ก็ให้ execute command สำหรับการ log in ไปก่อน ดังนี้

wget --execute "login=username" --execute "passwd=password" -r ftp://abc.com/xyz --exclude-directories="*/.svn"

จริงๆพวก username, password ใส่ไว้รวมกับ ftp://username:password@abc.com/xyz เลยก็ได้ แต่จะมีปัญหาถ้า username มี special character เช่น เครื่องหมาย "@"

ระบบที่ทดสอบ
OS: Ubuntu 10.10

อ้างอิง
http://www.gnu.org/software/wget/manual/wget.html

วันศุกร์ที่ 25 กันยายน พ.ศ. 2552

ftp multiple files with no prompt

เวลาส่งไฟล์ด้วย ftp บน command line หรือบนเครื่อง server นั้นถ้าต้องการส่งพร้อมกันทีละหลายๆไฟล์ เครื่องจะถามเพื่อยืนยันให้ตอบ yes หรือ no ในทุกๆไฟล์ ทำให้เสียเวลาเป็นอย่างมาก ดังนั้นถ้าไม่ต้องการให้มีการถามให้ใช้คำสั่ง prompt ดังนี้

ftp> prompt

Interactive mode off


คราวนี้ก็ให้ใช้คำสั่ง mput เพื่อส่งไฟล์หลายๆไฟล์ได้

ftp> mput *.* (หรือแล้วแต่ที่เราต้องการจะส่ง)

ระบบที่ทดสอบ
OS: Fedora 9

วันพุธที่ 26 พฤศจิกายน พ.ศ. 2551

หลักการพื้นฐานการเปิด port ของ FTP

การใช้งาน FTP ประกอบด้วย FTP Server และ FTP Client ซึ่งต้องมีวิธีการจัดการเกี่ยวกับ Port

FTP จะใช้ port หลักๆอยู่ 2 port ด้วยกันคือ port 20 และ 21
Port 21: ใช้ในการส่ง Control Message
Port 20: ใช้ในการส่ง Data Message หรือข้อมูลจริงที่ทำการรับส่งไฟล์
และนอกจากนั้นยังต้องใช้ random port อื่นๆเพื่อรองรับกรณีที่มีหลาย connection เชื่อมต่อเข้ามาพร้อมกัน

โดยจะเปิด port ไหนนั้นขึ้นอยู่กับการใช้งาน FTP ว่าเป็นลักษณะใด โดยแบ่งได้ 2 ลักษณะ

1. Active FTP แบบนี้ใช้ทั้ง port 20,21
command : client >1023 -> server 21
data : client >1023 <- server 20

ดังนั้น ฝั่ง client ต้องเปิด port มากกว่า 1023 เอาไว้ ฝั่ง server ต้องเปิด port 21 ขาเข้า และเปิด port 20 ขาออก

2. Passive FTP แบบนี้ไม่ต้องใช้ port 20
command : client >1023 -> server 21
data : client >1023 -> server >1023

ดังนั้น
ฝั่ง client ต้องเปิด port มากกว่า 1023 ขาออก
ฝั่ง server ต้องเปิด port 21 ขาเข้า และเปิด port มากกว่า 1023 ขาเข้า

ซึ่งปัจจุบัน FTP Server ส่วนใหญ่ก็มักใช้แบบ Passive เพราะเราไม่ต้องไปสนใจว่า client จะเปิด port ให้เรา(server)เชื่อมต่อไปได้หรือไม่

โดย port ที่มากกว่า 1023 ที่กล่าวในนี้นั้นแล้วแต่เราจะเลือกเปิด ซึ่งที่ผมใช้ Filezilla Server ในตัวอย่าง FAQ ของเค้ายกตัวอย่างว่า 5000-5100 สำหรับการเปิด port แบบเป็น range บน Windows Firewall นั้นดูได้ที่ http://ping2p.blogspot.com/2008/11/port-range-windows-firewall.html

อ้างอิง
http://www.slacksite.com/other/ftp.html