ยังลากไฟล์เว็บขึ้น server ผ่าน FileZilla ทีละพันไฟล์อยู่หรือเปล่า? มันค้าง-ไฟล์ตกกลางทาง อัปใหม่ก็เริ่มนับหนึ่ง — เปลี่ยนมาใช้ rsync / scp / SFTP เร็วกว่า ไม่ตก เข้ารหัส ⚡
มีน้องคนทำเว็บคนหนึ่งทักมาในไลน์ตอนดึกๆ ส่งภาพ FileZilla ที่ค้างอยู่ครึ่งทางมาให้ดู แถบ Transfer queue เป็นสีแดงเต็มไปหมด แล้วพิมพ์มาแบบนี้เลย
"พี่อ๊อด ผมลากไฟล์เว็บขึ้น server ผ่าน FileZilla มันค้างตลอดเลยครับ ไฟล์ตกไปหลายอัน อัปใหม่ก็เริ่มนับหนึ่ง มีวิธีที่ดีกว่านี้ไหม"
มีน้องคนทำเว็บคนหนึ่งทักมาในไลน์ตอนดึกๆ ส่งภาพ FileZilla ที่ค้างอยู่ครึ่งทางมาให้ดู แถบ Transfer queue เป็นสีแดงเต็มไปหมด แล้วพิมพ์มาแบบนี้เลย

"พี่อ๊อด ผมกำลังย้ายเว็บลูกค้าขึ้น VPS ตัวใหม่ครับ เว็บมันเป็น WordPress ไฟล์เยอะมาก รูป ปลั๊กอิน ธีม รวมกันเป็นหมื่นๆ ไฟล์ ผมเปิด FileZilla ลากทั้งโฟลเดอร์ขึ้นไป มันก็วิ่งดีอยู่พักนึง แล้วพอผ่านไปสักครึ่งชั่วโมง มันค้างเฉยเลยครับ ขึ้น timeout บ้าง ไฟล์แดงบ้าง บางไฟล์ขึ้นว่าโอนแล้วแต่ขนาด 0 ไบต์ พอผมกด retry มันดันเริ่มไล่นับใหม่ตั้งแต่ไฟล์แรก ผมนั่งเฝ้าจอมาจะสามชั่วโมงแล้วยังไม่จบเลย ตีสองแล้วครับพี่ ผมเหนื่อยมาก มันต้องมีวิธีที่ดีกว่านี้ใช่ไหม"
ผมอ่านแล้วได้แต่ถอนหายใจแทนน้องเลยครับ เพราะภาพนี้ผมเห็นมาเยอะมาก — คนทำเว็บเก่งๆ ทั้งนั้น เขียนโค้ดสวย ออกแบบเว็บสวย แต่พอถึงขั้นตอน "เอาไฟล์ขึ้น server" กลับยังใช้วิธีที่เก่าและเหนื่อยที่สุด คือ เปิด FileZilla แล้วลากด้วยมือทีละพันไฟล์ แล้วก็นั่งลุ้นว่าคืนนี้มันจะตกกี่ไฟล์
ผมเขียนโค้ด ทำเว็บมา 20 ปี ทำโฮสติ้งมา 11 ปี ดูแล VPS ให้ลูกค้าอยู่ราวๆ 600 เครื่อง ย้ายเว็บให้ลูกค้ามาแล้วเป็นพันๆ เว็บ — และผมขอบอกเลยว่า ผมแทบไม่เคยนั่งลาก FTP ด้วยมือเลย เพราะมันมีเครื่องมือที่ dev เขาใช้กันจริงๆ ที่ทั้งเร็วกว่า เชื่อถือได้กว่า (ไฟล์ไม่ตก resume ได้) และปลอดภัยกว่า (เข้ารหัส) อยู่ 3 ตัว คือ rsync · scp · SFTP
บทความนี้ผมจะเล่าให้ครบว่า — ทำไมการลาก FTP ด้วยมือถึงทั้งช้าทั้งเสี่ยงไฟล์ตก · เครื่องมือทั้ง 3 ตัวคืออะไรและใช้ตอนไหน · คำสั่งจริงทีละแบบ ก๊อปไปใช้ได้เลย · และกับดักที่ต้องระวัง (โดยเฉพาะ --delete ที่เผลอแล้วลบไฟล์เว็บหายได้) อ่านจบแล้วคุณจะไม่ต้องนั่งเฝ้าจอตีสองอีกต่อไป
💡 ขอแยกประเด็นก่อนกันงง: บทความนี้โฟกัสที่ "วิธีโอนไฟล์ขึ้น server ให้ถูก เร็ว ไม่ตก" (มุม operational / how-to) — ส่วนมุม "ความปลอดภัย" ว่าทำไมต้องเลิก FTP มาใช้ SFTP/เข้ารหัส ผมเขียนแยกไว้เต็มๆ ที่ SEC-41 เลิก FTP → SFTP (มุมความปลอดภัย) เนื้อหาต่อจากนี้จะกล่าวถึงเรื่องการเข้ารหัสบ้าง แต่หัวใจของชิ้นนี้คือ "โอนยังไงให้ไม่เหนื่อยและไฟล์ไม่หาย"
ส่วนที่ 1 — ลาก FTP ด้วยมือ มันมีปัญหายังไง (ทำไมถึงค้าง ทำไมไฟล์ถึงตก)
ก่อนจะไปดูเครื่องมือใหม่ ผมอยากให้เข้าใจก่อนว่า "การลากไฟล์ทีละพันใน FileZilla ผ่าน FTP" มันพังตรงไหน เพราะพอเข้าใจปัญหาแล้ว คุณจะเห็นเองว่าทำไมเครื่องมือใหม่ถึงแก้ได้ตรงจุด

1) มันช้า เพราะเปิด-ปิดการเชื่อมต่อทีละไฟล์ — โดยเฉพาะเว็บ WordPress ที่มีไฟล์เล็กๆ เป็นหมื่นๆ ไฟล์ (รูป icon, ไฟล์ js/css เล็กๆ, ไฟล์ปลั๊กอินยิบย่อย) FTP มันต้องเสียเวลาจัดการทีละไฟล์ ไม่ได้ส่งรวดเดียวเป็นก้อน พอไฟล์เยอะ เวลารวมเลยบานปลายเป็นชั่วโมงๆ ทั้งที่ขนาดไฟล์รวมจริงอาจไม่กี่ร้อยเมกะไบต์
2) มันค้าง/ไฟล์ตกกลางทาง — การเชื่อมต่อ FTP ค้างไว้นานๆ มันเปราะ พอเน็ตกระตุก หรือ server ปิด connection ที่ไม่มี activity (idle timeout) การลากก็สะดุด ไฟล์ที่กำลังโอนอยู่ตอนนั้นอาจกลายเป็น ไฟล์ครึ่งๆ กลางๆ หรือขนาด 0 ไบต์ อย่างที่น้องเจอ — แล้วที่อันตรายคือ FileZilla อาจขึ้นว่า "โอนแล้ว" ทั้งที่ไฟล์เสีย คุณไม่รู้เลยจนเว็บมันพังตอนเปิด
3) มัน resume ไม่ได้แบบฉลาด — พอลากไม่จบแล้วกด retry มันมักไล่ตรวจ/เริ่มนับใหม่ตั้งแต่ต้น แทนที่จะ "ส่งต่อเฉพาะส่วนที่ยังขาด" — นี่คือสาเหตุที่น้องบอกว่า "อัปใหม่เริ่มนับหนึ่ง" เสียเวลาที่ทำไปแล้วทิ้งหมด
4) FTP ธรรมดา "ไม่เข้ารหัส" (รหัสลอย) — ข้อนี้คนมองข้ามที่สุด FTP แบบดั้งเดิม (port 21) ส่งทุกอย่างเป็น ข้อความเปล่าๆ ทั้ง username, รหัสผ่าน, และเนื้อไฟล์ ใครดักเส้นทางเน็ตได้ก็เห็นหมด — เท่ากับคุณตะโกนรหัสเข้า server ดังๆ ทุกครั้งที่โอนไฟล์ (มุมนี้ผมขยายเต็มๆ ที่ SEC-41)
สรุปหัวใจส่วนนี้: ลาก FTP ด้วยมือ = ช้า + เปราะ (ตกง่าย) + เริ่มใหม่บ่อย + ไม่ปลอดภัย ทั้งหมดนี้ไม่ใช่เพราะคุณทำผิด แต่เพราะ "เครื่องมือมันไม่ได้ออกแบบมาเพื่องานนี้" — เราแค่ต้องเปลี่ยนเครื่องมือ
ส่วนที่ 2 — rsync / scp / SFTP คืออะไร ใช้ตอนไหน (3 ตัว เลือกให้ถูกงาน)
ข่าวดีคือเครื่องมือทั้ง 3 ตัวนี้ วิ่งผ่าน SSH ทั้งหมด แปลว่ามัน เข้ารหัสให้อัตโนมัติ (ปลอดภัยกว่า FTP ตั้งแต่ต้น) และถ้าคุณตั้ง SSH key ไว้แล้ว (ดู SRV-015 SSH key) มันก็ login ให้เองโดยไม่ต้องพิมพ์รหัสทุกครั้งด้วย มาดูทีละตัว:

🟢 rsync — พระเอกของงานย้ายเว็บทั้งก้อน / sync ซ้ำๆ
rsync เป็นเครื่องมือที่ฉลาดที่สุดในสามตัว จุดเด่นคือ:
- sync เฉพาะไฟล์ที่ต่าง — มันเทียบต้นทางกับปลายทางก่อน แล้วส่ง เฉพาะไฟล์ที่ใหม่/เปลี่ยน เท่านั้น ไฟล์ที่เหมือนเดิมมันข้ามให้เลย — แปลว่ารอบแรกอาจส่งทั้งหมด แต่รอบสองสามที่คุณแก้ไฟล์นิดเดียวแล้วอัปซ้ำ มันส่งแค่ไฟล์ที่แก้ เร็วทันใจมาก
- resume ได้จริง — ใส่ option
--partialแล้วถ้าขาดกลางทาง รอบหน้ามันส่งต่อจากที่ค้าง ไม่เริ่มนับหนึ่ง (แก้ปัญหาน้องตรงๆ) - เหมาะกับ — ย้ายเว็บทั้งเว็บขึ้น server ใหม่, อัปเดตไฟล์เว็บซ้ำๆ ตอน deploy, ซิงค์โฟลเดอร์ใหญ่ๆ ที่มีไฟล์เยอะ
- วิ่งผ่าน ssh ได้ — ปลอดภัย และใช้ key/พอร์ตที่ย้ายได้
ถ้าจะให้ผมแนะนำตัวเดียวสำหรับ "ย้ายเว็บ" — ผมตอบ rsync ทันที
🔵 scp — copy เร็วๆ ไฟล์เดียว/โฟลเดอร์เดียว
scp (secure copy) คือ "ก๊อปไฟล์ผ่าน ssh" แบบง่ายๆ ตรงไปตรงมา ไม่มีลูกเล่นเทียบไฟล์เหมือน rsync — สั่งปุ๊บมันก๊อปทั้งก้อนปั๊บ
- เหมาะกับ — ส่งไฟล์เดียว หรือโฟลเดอร์เดียวเร็วๆ เช่น โยน backup ไฟล์เดียวขึ้นไป, ดึง log ไฟล์เดียวลงมา, ส่งไฟล์ config ตัวเดียว
- ข้อจำกัด — มันไม่ฉลาดเรื่อง resume/sync เท่า rsync ถ้าไฟล์เยอะมากและอาจขาดกลางทาง rsync เหมาะกว่า — แต่ถ้าแค่ไฟล์สองสามไฟล์ scp นี่สั้นและไวดี
🟡 SFTP — เหมือน FTP เดิมที่คุณคุ้น แต่วิ่งบน ssh (เข้ารหัส)
SFTP คือทางที่ "เปลี่ยนน้อยที่สุด" สำหรับคนที่ติดมือ FileZilla — เพราะ FileZilla รองรับ SFTP อยู่แล้ว คุณแค่เปลี่ยนโปรโตคอลจาก FTP เป็น SFTP แล้วต่อผ่าน port 22 (พอร์ต SSH) แทน
- เหมาะกับ — คนที่ยังอยากใช้หน้าตาลากๆ วางๆ แบบ FileZilla อยู่ แต่ต้องการให้มันเข้ารหัส, หรือแก้ไฟล์ทีละไฟล์บน server เป็นครั้งคราว
- ข้อดีกว่า FTP ทันที — เข้ารหัสทั้งรหัสผ่านและเนื้อไฟล์ (ไม่ลอยแล้ว)
- ข้อสังเกต — มันยังเป็นแนว "ลากทีละไฟล์" อยู่ ดีกว่า FTP ตรงเข้ารหัสและเสถียรกว่า แต่ถ้าจะย้ายเว็บทั้งก้อนที่ไฟล์เป็นหมื่น rsync ยังเหนือกว่าเรื่องความเร็วและ resume
สรุปวิธีเลือกแบบบ้านๆ: ย้ายเว็บทั้งก้อน/อัปซ้ำๆ → rsync · ไฟล์เดียวเร็วๆ → scp · อยากใช้ FileZilla ต่อแต่ให้ปลอดภัย → SFTP
ส่วนที่ 3 — คำสั่งจริง ทีละแบบ (ก๊อปไปใช้ได้เลย)
มาภาคปฏิบัติ ผมจะให้คำสั่งจริงที่ทำตามได้ทันที สมมติคุณรันจาก Terminal บน เครื่องคุณเอง (Mac/Linux หรือ Windows ที่มี WSL/PowerShell ก็คล้ายกัน) แล้วต้นทางคือโฟลเดอร์เว็บในเครื่อง ปลายทางคือ server:

▶︎ rsync — ย้ายเว็บทั้งโฟลเดอร์ขึ้น server
rsync -avz --progress ./site/ user@host:/var/www/site/
อธิบายทีละส่วน:
-a= archive mode (เก็บ permission/เวลา/โครงสร้างโฟลเดอร์ครบเหมือนต้นฉบับ)-v= verbose (โชว์ว่ากำลังส่งไฟล์อะไร)-z= บีบอัดระหว่างส่ง (เร็วขึ้นบนเน็ตช้า)--progress= โชว์แถบความคืบหน้าทีละไฟล์ จะได้รู้ว่าถึงไหนแล้ว./site/= ต้นทาง (โฟลเดอร์เว็บในเครื่องคุณ) — เครื่องหมาย/ท้ายสำคัญมาก มันแปลว่า "ส่งของข้างในโฟลเดอร์" ถ้าไม่ใส่/มันจะส่งทั้งโฟลเดอร์ site เข้าไปซ้อนอีกชั้นuser@host:/var/www/site/= ปลายทาง (user + ไอพี server + โฟลเดอร์ปลายทาง)
⚠️ เรื่อง
/ท้ายต้นทางนี่พลาดกันบ่อยมาก ถ้าทำครั้งแรก ผมแนะนำเติม--dry-runเข้าไปก่อน (เช่นrsync -avz --dry-run --progress ./site/ user@host:/var/www/site/) มันจะ โชว์ว่าจะทำอะไรบ้างโดยยังไม่ทำจริง ดูให้ชัวร์แล้วค่อยเอา--dry-runออกแล้วรันจริง
▶︎ rsync — ผ่าน SSH key และพอร์ตที่ย้าย
ถ้าคุณย้ายพอร์ต SSH หนีจาก 22 (เช่นไป 2222) หรือใช้ key ไฟล์เฉพาะ ให้บอก rsync ผ่าน option -e:
rsync -avz --progress -e "ssh -p 2222 -i ~/.ssh/id_ed25519" ./site/ user@host:/var/www/site/
-e "ssh -p 2222 -i ~/.ssh/id_ed25519"= สั่งให้ rsync วิ่ง ssh โดยใช้ พอร์ต 2222 และ key ไฟล์ ที่ระบุ (rsync/scp วิ่งบน ssh จึงต่อยอดจาก SRV-015 SSH key ได้ตรงๆ)
▶︎ rsync — ข้ามไฟล์ที่ไม่อยากส่ง (--exclude)
เวลาย้ายเว็บ คุณมักไม่อยากเอา cache, log, หรือ .git ขึ้นไปด้วย ใช้ --exclude:
rsync -avz --progress --exclude 'wp-content/cache/' --exclude '.git/' ./site/ user@host:/var/www/site/
ใส่ --exclude กี่อันก็ได้ ใส่ pattern ที่ไม่อยากส่งเข้าไป
▶︎ rsync — --delete (ทรงพลังแต่อันตราย — อ่านให้ดี)
rsync -avz --progress --delete ./site/ user@host:/var/www/site/
--delete สั่งให้ rsync ทำให้ปลายทาง "เหมือนต้นทางเป๊ะ" — แปลว่า ไฟล์ที่อยู่บน server แต่ไม่มีในต้นทางของคุณ จะถูกลบทิ้ง มันมีประโยชน์ตอนทำ mirror จริงๆ (เช่น deploy เว็บให้เป๊ะกับโค้ดล่าสุด)
⛔ เตือนตัวโตๆ:
--deleteคือคำสั่งที่ลบไฟล์ปลายทางได้จริง ถ้าคุณเผลอชี้ต้นทางผิดโฟลเดอร์ (เช่นชี้ไปโฟลเดอร์ว่าง) มันจะ ลบไฟล์เว็บบน server เกลี้ยง — ผมเจอเคสคนทำเว็บทำพลาดแบบนี้มาแล้ว เพราะงั้น ใช้--deleteคู่กับ--dry-runเสมอในครั้งแรก ดูให้ชัวร์ว่ามันจะลบอะไรบ้างก่อนรันจริง และต้องมั่นใจว่ามี backup อยู่ (ที่ PhalconHost เรา auto backup ให้รายวันอยู่แล้ว — อุ่นใจตรงนี้)
▶︎ scp — ก๊อปไฟล์เดียว / โฟลเดอร์เดียว
scp ./backup.sql user@host:/home/user/
ก๊อปทั้งโฟลเดอร์เติม -r (recursive):
scp -r ./site user@host:/var/www/
ถ้าจะดึงจาก server ลงมาเครื่องเรา ก็สลับฝั่ง: scp user@host:/home/user/backup.sql ./ — ถ้าพอร์ตย้าย scp ใช้ -P 2222 (ตัว P ใหญ่นะครับ คนละตัวกับ rsync/ssh ที่เป็น p เล็ก)
▶︎ SFTP — ต่อแบบ interactive (put/get)
sftp user@host
พอเข้าไปได้จะเจอ prompt sftp> แล้วใช้คำสั่งง่ายๆ:
put localfile.zip= อัปไฟล์จากเครื่องเราขึ้น serverput -r ./site= อัปทั้งโฟลเดอร์get remotefile.zip= ดึงไฟล์จาก server ลงมาls/cd= ดู/เปลี่ยนโฟลเดอร์บน server เหมือน FTP เดิมbye= ออก
หรือถ้าถนัดหน้าจอลากวาง ก็เปิด FileZilla → เปลี่ยน Protocol เป็น SFTP → ใส่ host/user/port 22 ก็ได้ความเข้ารหัสทันทีโดยหน้าตายังคุ้นเหมือนเดิม
ส่วนที่ 4 — ข้อควรระวัง (กับดักที่ผมเห็นคนพลาดบ่อย)
ก่อนปล่อยให้คุณไปลุยจริง ผมขอย้ำกับดัก 4 อย่างที่เจอบ่อย:

1) --delete ลบของจริง — ย้ำอีกรอบเพราะสำคัญสุด ใช้เมื่อจำเป็น ใช้คู่ --dry-run ก่อนเสมอ และต้องมี backup รองหลัง
2) เครื่องหมาย / ท้าย path ของ rsync — ./site/ (มี /) กับ ./site (ไม่มี /) ให้ผลต่างกัน อันแรกส่งของในโฟลเดอร์ อันหลังส่งทั้งโฟลเดอร์เข้าไปซ้อน — --dry-run ช่วยให้เห็นก่อนพลาด
3) พอร์ต/คีย์ของแต่ละเครื่องมือเขียนไม่เหมือนกัน — rsync ใช้ -e "ssh -p 2222 -i key", scp ใช้ -P 2222 (P ใหญ่), ssh/sftp ใช้ -p 2222 (p เล็ก) — จำสับกันบ่อย ถ้าต่อไม่ติดให้เช็กพอร์ตตรงนี้ก่อน (ต่อยอดจาก SSH key/พอร์ตที่ย้าย ดู SRV-016 hardening SSH)
4) permission/เจ้าของไฟล์หลังโอน — พอย้ายไฟล์เว็บขึ้นไปแล้ว เจ้าของไฟล์ (owner) อาจไม่ตรงกับ user ที่เว็บเซิร์ฟเวอร์ใช้ ทำให้เว็บอ่านไฟล์ไม่ได้/เขียนไม่ได้ ตรงนี้ต้องตั้ง owner/permission ให้ถูกหลังโอน (เรื่อง permission เว็บผมจะแยกเล่าในชิ้นอื่น) — ถ้าโอนกับ PhalconHost ทักมาได้ ผมช่วยเซ็ตให้ถูก
(สิ่งที่พลาด) (ทำผิดวิธี) (สิ่งที่พลาด) ที่คนทำเว็บส่วนใหญ่ยังทำ คือ "ย้ายไฟล์เว็บขึ้น server ด้วยการลาก FTP ด้วยมือทีละพันไฟล์" — มันไม่ใช่ว่าคุณไม่เก่ง แต่เป็นเพราะใช้เครื่องมือผิดงาน ผลคือเสียเวลาเป็นชั่วโมง, ไฟล์ตกกลางทางโดยไม่รู้ตัว, และรหัสลอยไม่เข้ารหัส — ทั้งที่ dev เขาเปลี่ยนมาใช้ rsync (sync เฉพาะที่ต่าง + resume), scp (ไฟล์เดียวเร็วๆ), SFTP (เข้ารหัส) กันหมดแล้ว เปลี่ยนเครื่องมือ = จบปัญหาทั้งพวง
สรุปเป็นตาราง — FTP vs SFTP vs scp vs rsync ใช้แบบไหน

| หัวข้อ | FTP (ลากมือ) | SFTP | scp | rsync |
|---|---|---|---|---|
| วิ่งผ่าน | FTP (port 21) | SSH (port 22) | SSH | SSH |
| เข้ารหัส | ❌ ไม่ (รหัสลอย) | ✅ ใช่ | ✅ ใช่ | ✅ ใช่ |
| ส่งเฉพาะไฟล์ที่ต่าง | ❌ ไม่ | ❌ ไม่ | ❌ ไม่ | ✅ ใช่ (เด่นสุด) |
| resume ได้ | ❌ มักเริ่มใหม่ | ⚠️ บางส่วน | ❌ ไม่ | ✅ ใช่ (--partial) |
| เร็วกับไฟล์เยอะ | ❌ ช้ามาก | ⚠️ พอใช้ | ⚠️ พอใช้ | ✅ เร็วสุด |
| ทำอัตโนมัติ/script ได้ | ⚠️ ยาก | ⚠️ พอได้ | ✅ ได้ | ✅ ได้ดี (deploy) |
| หน้าตาลากวาง (GUI) | ✅ FileZilla | ✅ FileZilla | ❌ command | ❌ command |
| เหมาะกับงาน | (เลิกใช้เถอะ) | แก้ไฟล์ทีละไฟล์ / คนติด FileZilla | ไฟล์เดียว/โฟลเดอร์เดียวเร็วๆ | ย้ายเว็บทั้งก้อน / อัปซ้ำๆ / deploy |
อ่านตารางนี้แล้วจะเห็นภาพชัด: FTP ลากมือแพ้ทุกช่อง ส่วนจะเลือก SFTP/scp/rsync ก็ดูที่ "งานคุณคืออะไร" ตามคอลัมน์สุดท้าย
เล่าให้ฟังหนึ่งเคส
กลับมาที่น้องคนที่ทักมาตอนตีสอง — ผมให้น้องหยุดลาก FileZilla ก่อนเลย แล้วบอกว่า "ไฟล์ที่ลากค้างๆ ไปแล้วเนี่ย เดี๋ยวมันอาจมีไฟล์เสียปนอยู่ เราจะใช้ rsync ไล่ทับให้มันถูกเองทั้งหมด"

ผมให้น้องเปิด Terminal แล้วรัน rsync จากโฟลเดอร์เว็บในเครื่อง ขึ้นไปที่ VPS ผ่าน SSH key ที่น้องตั้งไว้แล้ว — คำสั่งประมาณ rsync -avz --progress --partial ./site/ user@host:/var/www/site/ รอบแรกมันก็ไล่เทียบทั้งหมด ส่งเฉพาะไฟล์ที่ยังขาดหรือเสีย (ไฟล์ที่ลากขึ้นไปครบดีแล้วมันข้ามให้เลย) — ที่น้องตกใจคือ มันวิ่งจบเร็วกว่าที่คิดมาก เพราะของที่ลากไปได้แล้วมันไม่ส่งซ้ำ แล้วพอเน็ตน้องกระตุกหนึ่งครั้งระหว่างทาง น้องแค่กดรันคำสั่งเดิมซ้ำ มัน ส่งต่อจากที่ค้าง ไม่เริ่มนับหนึ่ง — น้องพิมพ์กลับมาว่า "พี่ครับ ผมเสียเวลาสามชั่วโมงไปทำไมเนี่ย อันนี้สิบนาทีก็จบ"
จากนั้นผมแนะนำต่อว่า เว็บนี้น้องต้องอัปเดตบ่อย ให้เก็บคำสั่ง rsync ตัวนี้ไว้เลย ครั้งหน้าแก้ไฟล์ไหนก็รันซ้ำ มันส่งแค่ไฟล์ที่แก้ ไม่กี่วินาทีก็เสร็จ — นี่แหละครับ พอใช้เครื่องมือถูก จากงานที่เคยเฝ้าจอตีสอง กลายเป็นงานที่จบในกาแฟแก้วเดียว
แล้ว PhalconHost ช่วยเรื่องนี้ยังไง?
ผมตั้งใจทำ PhalconHost ให้เป็น "โฮสต์ที่ dev คุยกับ dev รู้เรื่อง" — เพราะผมเองก็เป็นคนทำเว็บมาก่อน ผมรู้ว่าตอนย้ายเว็บมันเครียดแค่ไหน เรื่องการโอนไฟล์ขึ้น server ผมช่วยลูกค้าแบบนี้ครับ:

- เปิดทางให้ใช้เครื่องมือ dev เต็มที่ — VPS/โฮสติ้งของเรารองรับ SSH (ตั้ง SSH key ได้), rsync, scp, SFTP ครบ คุณจะ deploy ด้วย rsync หรือเชื่อมต่อ SFTP ก็ทำได้ ไม่ต้องมานั่งลาก FTP เก่าๆ
- ช่วยตั้งให้ถูกตั้งแต่ต้น — ทักไลน์มาได้เลย ผมช่วยดูคำสั่ง rsync ให้ถูก (โดยเฉพาะ
/ท้าย path กับ--deleteที่พลาดแล้วเจ็บ), ช่วยเซ็ต SSH key/พอร์ต, และเซ็ต owner/permission ของไฟล์เว็บให้ถูกหลังโอน — ตอบเองกับมือ ไม่โยนไปมา - มี auto backup รายวันให้ฟรีทุกราย — ข้อนี้ผมถือเป็น ความรับผิดชอบ ของคนทำโฮสต์ ไม่ใช่ของขายเสริม เวลาคุณรัน rsync
--deleteแล้วเผลอพลาด หรือย้ายเว็บแล้วมีอะไรไม่เข้าที่ คุณยังมีจุดให้ย้อนกลับได้ — อุ่นใจว่าไฟล์ไม่หายหมดในคลิกเดียว - ย้ายเว็บเข้ามาให้ช่วยได้ — ถ้าเว็บไฟล์เยอะมากจนน้องไม่อยากปวดหัวเอง ทักมาคุยกันได้ ผมช่วยวางแผนย้ายให้ครบ ไฟล์ไม่ตก
ที่ผมทำแบบนี้ไม่ใช่เพราะอยากให้ดูเทพอะไร แต่เพราะผมเชื่อว่า คนทำเว็บควรได้เอาเวลาไปทำเว็บ ไม่ใช่มานั่งเฝ้าจอลากไฟล์ตอนตีสอง
ปิดท้าย
สรุปสั้นๆ: ถ้าคุณยังลากไฟล์เว็บขึ้น server ผ่าน FileZilla/FTP ด้วยมือทีละพันไฟล์อยู่ — มันไม่ใช่ความผิดคุณ แต่เป็นเพราะเครื่องมือมันไม่เหมาะกับงาน เปลี่ยนมาใช้ rsync (ย้ายทั้งก้อน/อัปซ้ำ — เร็ว, resume ได้, ส่งเฉพาะที่ต่าง), scp (ไฟล์เดียวเร็วๆ), หรือ SFTP (อยากใช้ FileZilla ต่อแต่ให้เข้ารหัส) — ทั้งหมดวิ่งผ่าน SSH ปลอดภัยตั้งแต่ต้น และจำกับดักไว้: ระวัง --delete, ดู / ท้าย path, และลอง --dry-run ก่อนรันจริงในครั้งแรก

ลองเอาคำสั่ง rsync ในบทความนี้ไปใช้ดูครับ แล้วคุณจะไม่อยากกลับไปลาก FTP อีกเลย
ถ้าติดตรงไหน — คำสั่ง rsync ต่อไม่ติด, ไม่แน่ใจว่า path ถูกไหม, หรือกลัว --delete จะลบของหาย — ทักไลน์มาคุยกับผมได้เลยครับ เป็นลูกค้าหรือยังไม่ได้เป็นก็ถามได้ ผมช่วยดูให้ ที่ PhalconHost — Dev ดูแล Dev ครับ 🙂
ต้องการสอบถามข้อมูลเพิ่มเติม?
สามารถแอดไลน์คุยกันก่อนได้ที่ line: @PhalconHost