ลด 50% ทุกแพ็กเกจ เวลาจำกัด เริ่มต้นที่ $2.48/mo
10 นาทีที่เหลือ
ความปลอดภัยและเครือข่าย

วิธีใช้ Rsync ใน Linux? Rsync ไปยัง Remote Server 💻📥

ลิลี่ คาร์เนลล์ By ลิลี่ คาร์เนลล์ อ่าน 10 นาที อัปเดตเมื่อ 16 เมษายน 2023
rsync ไปยังเซิร์ฟเวอร์รีโมท

ไม่ว่าคุณจะเป็นผู้ดูแลระบบหรือผู้ใช้ทั่วไป การสำรองข้อมูลและซิงก์ไฟล์ระหว่างหลายระบบเป็นงานที่ต้องทำอยู่สม่ำเสมอ หากต้องคัดลอกไฟล์ทั้งหมดทุกครั้ง งานนี้จะเสียเวลาและน่าเบื่อหน่ายมาก นั่นคือจุดที่เครื่องมือ Linux Rsync สำหรับการเชื่อมต่อเซิร์ฟเวอร์ระยะไกลเข้ามาช่วยคุณได้ คู่มือนี้จะพาคุณรู้จักคำสั่ง Rsync ที่ใช้งานบ่อยที่สุด พร้อมใช้ประโยชน์จากความเร็วและความปลอดภัยที่มีให้

Rsync Utility คืออะไร?

การซิงค์ระยะไกล (Rsync) คือคำสั่ง Linux/Unix ที่ได้รับความนิยมสูง ใช้สำหรับคัดลอกและซิงก์ไฟล์กับไดเรกทอรีทั้งแบบเข้าถึงระยะไกลและแบบโลคัล คำสั่ง Rsync ช่วยให้คุณจัดการข้อมูลได้หลากหลาย ไม่ว่าจะเป็นการซิงก์ คัดลอก หรือสำรองข้อมูล นอกจากนี้ยังสามารถมิเรอร์ระบบ Linux ของคุณไปยังอีกระบบหนึ่งได้ด้วย

หลักการทำงานของ Rsync กับเซิร์ฟเวอร์ระยะไกลคือการถ่ายโอนไฟล์ที่รวดเร็ว โดยในการส่งข้อมูลระหว่างสองแหล่ง Rsync จะพิจารณาเฉพาะส่วนที่แตกต่างกันเท่านั้น กล่าวคือคำสั่ง Rsync ช่วยให้คุณไม่ต้องเสียเวลาถ่ายโอนข้อมูลซ้ำซ้อน เพราะระบบจะมองหาเฉพาะส่วนที่เปลี่ยนแปลงระหว่างสองระบบ Linux เท่านั้น

ทำไมต้องใช้ Rsync?

อย่างที่ทราบกันดีว่ามีเครื่องมือสำรองข้อมูลให้เลือกใช้หลายตัว คำถามคือ อะไรทำให้ Rsync แตกต่างจากยูทิลิตีหรือคำสั่งอื่น ๆ?

ตัวอย่างเช่น คุณสามารถใช้ โปรโตคอลการถ่ายโอนไฟล์ (FTP) เพื่อเก็บสำเนาเว็บไซต์ไว้ในเครื่อง หรือใช้ โปรโตคอลการคัดลอกที่ปลอดภัย (SCP) สำหรับงานนี้ได้เช่นกัน อย่างไรก็ตาม ทั้งสองมาพร้อมข้อเสียในตัว FTP ไม่มีการเข้ารหัสข้อมูล ซึ่งไม่ตอบโจทย์ความปลอดภัย ส่วน SCP แม้จะแก้ปัญหาการถ่ายโอนที่ไม่เข้ารหัสได้ แต่ก็ใช้เวลานานกว่าเพราะต้องสร้าง tunnel ในการส่งข้อมูล

Rsync จึงเป็นทางเลือกที่ดีกว่า โดยสามารถใช้ Rsync กับเซิร์ฟเวอร์ระยะไกลผ่านการเข้ารหัสด้วย key (หรือที่เรียกว่า Rsync SSH หรือ Rsync over SSH) ซึ่งป้องกันการส่งข้อมูลซ้ำและใช้ SSH key ในการยืนยันตัวตน นอกจากนี้ Rsync ยังใช้การบีบอัดและคลายการบีบอัดข้อมูลระหว่างรับส่ง ทำให้ใช้แบนด์วิดท์น้อยลง

วิธีติดตั้ง Rsync

โดยทั่วไประบบของคุณอาจมี Rsync ติดตั้งอยู่แล้ว แต่เรามาตรวจสอบให้ชัดเจนกัน ก่อนอื่น โปรดทราบว่าต้องติดตั้ง SSH ไว้ในทั้งระบบต้นทางและปลายทางก่อน เนื่องจากเราจะใช้ Rsync over SSH

ขั้นตอนที่ 1: ตรวจสอบเวอร์ชัน SSH

ตรวจสอบเวอร์ชันของ SSH ได้ด้วยคำสั่งต่อไปนี้:

ssh -V

ในการใช้ Rsync กับเซิร์ฟเวอร์ระยะไกล คุณต้องมีเซิร์ฟเวอร์โลคัล (ต้นทาง) และเซิร์ฟเวอร์ระยะไกล รวมถึงต้องแน่ใจว่าเซิร์ฟเวอร์โลคัลมีสิทธิ์ผู้ดูแลระบบ (sudo)

ขั้นตอนที่ 2: ติดตั้ง Rsync บน Linux

คำสั่งต่อไปนี้ใช้ติดตั้ง Rsync บน Ubuntu, Linux Mint และ Debian:

sudo apt install rsync -y

หากคุณใช้ Linux distribution อื่น เช่น Fedora, CentOS, AlmaLinux และ Red Hat ให้พิมพ์คำสั่งต่อไปนี้เพื่อติดตั้ง Rsync บนระบบของคุณ:

sudo dnf install rsync

หมายเหตุ: apt คือเครื่องมือจัดการแพ็กเกจที่ใช้กันใน distribution ที่ใช้ฐานจาก Debian

ขั้นตอนที่ 3: เริ่มต้น Rsync

เริ่มต้นและเปิดใช้งาน Rsync ด้วยคำสั่งต่อไปนี้:

sudo systemctl start rsync 
sudo systemctl enable rsync

ขั้นตอนที่ 4: ตรวจสอบการติดตั้ง Rsync

รันคำสั่งต่อไปนี้เพื่อตรวจสอบว่าติดตั้ง Rsync ถูกต้องหรือไม่ และดูว่ากำลังใช้เวอร์ชันใดบนระบบ Linux ของคุณ:

rsync --version

ในส่วนถัดไป เราจะอธิบายวิธีใช้ความสามารถของเครื่องมือนี้ในการสำรองข้อมูลผ่านการยืนยันตัวตนด้วย key

วิธีสร้างการสำรองข้อมูลด้วย Rsync ผ่าน SSH

การสำรองข้อมูลแบบ incremental เป็นหนึ่งในกรณีการใช้งาน Rsync ผ่าน SSH ศึกษาคำสั่งต่อไปนี้เพื่อทำความเข้าใจวิธีการทำงาน:

rsync -av -e ssh /sourceDir/ user@remote:/path/to/destinationDir

การรันคำสั่งข้างต้นจะช่วยซิงค์ sourceDir และ destinationDirคำสั่งนี้มีตัวเลือกอื่น ๆ ที่ควรทำความคุ้นเคย เช่น -a (archive) และ -v (verbose)หมายเหตุว่า -e ssh ตัวเลือกนี้บังคับให้ Rsync เชื่อมต่อผ่านโปรโตคอล SSH

หากต้องการให้ การเชื่อมต่อ SSH รับการเชื่อมต่อผ่านพอร์ตอื่นที่ไม่ใช่ค่าเริ่มต้น (พอร์ต 22) คุณต้องระบุหมายเลขพอร์ตหลัง -e ssh. ดูคำสั่งต่อไปนี้เพื่อทำความเข้าใจวิธีการทำงาน

rsync -av -e ssh 1998 sourceDir/ user@remote:/path/to/destinationDir

ในคำสั่งข้างต้น เราสมมติว่าต้องการใช้พอร์ต 1998 แทนพอร์ต 22 สำหรับ SSH

Rsync สำหรับเซิร์ฟเวอร์ระยะไกลผ่าน SSH มีตัวเลือกอื่น ๆ ที่มีประโยชน์ ตัวอย่างเช่น การใช้ –partial ตัวเลือกนี้ช่วยให้สามารถต่อการถ่ายโอนที่ค้างไว้ได้ในกรณีที่เกิดปัญหา เช่น Rsync ถูกขัดจังหวะ นอกจากนี้ยังดูความคืบหน้าการถ่ายโอนไฟล์ปัจจุบันได้ผ่าน –progress ตัวเลือก และ Linux ยังรองรับการใช้ทั้งสองฟีเจอร์นี้พร้อมกัน โดยใช้ -p flag ใน command line

rsync -avP  -e ssh /sourceDir/ user@remote:/path/to/destinationDir

คำสั่ง Rsync สำหรับเซิร์ฟเวอร์ระยะไกลพร้อม key ช่วยให้บีบอัดข้อมูลก่อนถ่ายโอนไปยังปลายทางได้ แม้จะใช้ CPU ในการบีบอัด แต่ก็ยังมีประโยชน์มาก เพราะทำให้การถ่ายโอนไฟล์เร็วขึ้นและใช้แบนด์วิดท์น้อยลง

คุณใช้คำสั่ง Rsync เพื่อคัดลอกไฟล์และไดเรกทอรีได้ทั้งแบบ remote และ local ข้อได้เปรียบหลักของ Rsync คือการทำงานบนพื้นฐานของ อัลกอริทึมการถ่ายโอนเดลต้าซึ่งป้องกันการคัดลอกข้อมูลซ้ำจากต้นทางไปยังปลายทาง ดังที่กล่าวไว้ก่อนหน้านี้ ฟีเจอร์นี้ของ Rsync ช่วยได้มากหากต้องการจัดการการสำรองข้อมูลรายวันและการมิเรอร์ระบบ ตอนนี้มาดูการใช้คำสั่ง Rsync สำหรับงาน local กัน

วิธีใช้ Rsync สำหรับการซิงค์แบบ Local

ก่อนจะเข้าสู่การซิงค์แบบ local และวิธีใช้คำสั่ง Rsync สำหรับงานนี้ ควรทำความเข้าใจโครงสร้างทั่วไปของ Rsync แบบ local ก่อน ดังที่แสดงด้านล่าง:

rsync [options] [Source] [Destination]

การคัดลอกไฟล์แบบ Local

สมมติว่าต้องการซิงค์หรือคัดลอกไฟล์จากไดเรกทอรี desktop (ชื่อว่า Cloudzy) ถึง /home/Public โฟลเดอร์ นี่คือคำสั่งที่ต้องป้อน:

rsync -zvh /desktop/Cloudzy/myfile.pdf /home/Public

คำสั่ง Rsync ข้างต้นประกอบด้วยสามตัวเลือก ได้แก่ -zvh; โดยการใช้ -z, ไฟล์ของคุณจะถูกบีบอัดระหว่างการถ่ายโอน ตัวเลือก v ใช้สำหรับแสดงผลลัพธ์แบบละเอียด และ h ตัวเลือก ช่วยให้เราอ่านผลลัพธ์ได้ง่ายขึ้น นั่นคือการแสดงผลในรูปแบบที่มนุษย์อ่านได้

การคัดลอกไดเรกทอรีในเครื่อง

หากต้องการคัดลอกไดเรกทอรี desktop (ชื่อว่า Cloudzy) ถึง /home/Public โฟลเดอร์ ให้พิมพ์คำสั่งด้านล่างนี้:

rsync -zavh /desktop/Cloudzy/myfile.pdf /home/Public

ค่า -a ตัวเลือกนี้ในคำสั่งจะเก็บโครงสร้างไดเรกทอรีและไฟล์ไว้ระหว่างการซิงก์

คุณสามารถตรวจสอบรายการไดเรกทอรีของโฟลเดอร์ปลายทางได้อย่างรวดเร็ว เพื่อยืนยันว่าไดเรกทอรีถูกคัดลอกแล้วหรือยัง โดยใช้คำสั่งต่อไปนี้:

ls -ld /home/Public

การซิงก์ไฟล์และไดเรกทอรีแบบ Recursive ในเครื่อง (Recursive Rsync)

จะเป็นอย่างไรถ้ามีหลายไดเรกทอรีและหลายไฟล์อยู่ใน /desktop/Cloudzy, และคุณต้องการคัดลอกทั้งหมดแบบ recursive ด้วยคำสั่ง Linux Rsync?

ในกรณีนี้ ให้ใช้ ตัวเลือก -r เพื่อซิงก์ไฟล์และไดเรกทอรีในเครื่องแบบ recursive คุณยังสามารถใช้ ตัวเลือกเก็บถาวร (-a) เนื่องจากรองรับการใช้งานอื่นด้วย เช่น การคัดลอกแบบ recursive โปรดดูคำสั่งต่อไปนี้เพื่อทำความเข้าใจคำสั่ง Rsync recursive

rsync -zrvh /desktop/Cloudzy /home/Public

Or

rsync -zrvh /desktop/Cloudzy /home/Public

การคัดลอกไดเรกทอรีและไฟล์จากเครื่อง Local ไปยัง Remote

นอกจากคุณสมบัติของ Linux Rsync สำหรับเชื่อมต่อกับ remote server ที่กล่าวถึงในส่วนก่อนหน้าแล้ว คำสั่งที่เป็นที่รู้จักนี้ยังรองรับการซิงก์ไฟล์และไดเรกทอรีจากเครื่อง local ไปยังระบบ remote ด้วย

สมมติว่าเราต้องการคัดลอกโฟลเดอร์ (/desktop/Cloudzy/โฟลเดอร์ใหม่) จากเครื่อง local ไปยังระบบ remote (พร้อม IP: 192.168.1.79) ภายใต้ /mycpt; ตัวอย่างต่อไปนี้แสดงวิธีการทำงาน:

rsync -zarvh /desktop/Cloudzy/newfolder [email protected]:/mycpt

วิธีคัดลอกไดเรกทอรีโดยไม่รวมไฟล์ด้วย Rsync

ในบางกรณี เราอาจต้องการใช้ความสามารถของ Linux Rsync กับ remote server เพื่อคัดลอกเฉพาะไดเรกทอรีโดยไม่รวมไฟล์ ซึ่งอาจเป็นการซิงก์จาก remote ไปยัง local หรือในทิศทางตรงข้ามก็ได้

ในบทความนี้ เราใช้ระบบ remote ที่ 192.168.1.79. สมมติว่าเราเก็บไว้ใน /mycpt โฟลเดอร์ และต้องการคัดลอก /desktop/Cloudzy ไดเรกทอรีจากระบบในเครื่องโดยไม่รวมไฟล์ภายใน ใช้คำสั่งด้านล่างเพื่อดำเนินการนี้:

rsync -av -f"+ */" -f"- *" /desktop/Cloudzy [email protected]:/mycpt/

คำสั่ง Rsync ที่มีประโยชน์อื่น ๆ

ในส่วนนี้จะกล่าวถึงคำสั่ง Linux Rsync เพิ่มเติมที่อาจเป็นประโยชน์สำหรับคุณ

กำหนดขนาดไฟล์สูงสุดสำหรับการถ่ายโอนใน Rsync

คุณสามารถกำหนดขนาดไฟล์สูงสุดสำหรับการถ่ายโอนด้วยคำสั่ง Rsync ซึ่งมีประโยชน์เมื่อคุณรัน Rsync ไปยังเซิร์ฟเวอร์ระยะไกลเป็นประจำและแบนด์วิดท์รวมถึงเวลาเป็นปัจจัยสำคัญที่ต้องคำนึงถึง ดูคำสั่งด้านล่างเพื่อทำความเข้าใจการตั้งค่าขีดจำกัดขนาดในการถ่ายโอนไฟล์ด้วย Rsync:

rsync -avzhe ssh --max-size='100k' /desktop/Cloudzy [email protected]:/home/Public

กำหนดขนาดไฟล์ต่ำสุดสำหรับการถ่ายโอนใน Rsync

เช่นเดียวกับการกำหนดขนาดสูงสุด คุณสามารถกำหนดขนาดไฟล์ต่ำสุดที่ต้องการถ่ายโอนผ่าน Rsync ไปยังเซิร์ฟเวอร์ปลายทางได้ ในคำสั่งด้านล่าง เราจะตั้งขนาดไฟล์ต่ำสุดไว้ที่ 10k:

rsync -avzhe ssh --min-size='10k' /desktop/Cloudzy [email protected]:/home/Public

ลบไฟล์จากต้นทางหลังการซิงโครไนซ์เสร็จสิ้น

เมื่อใช้คำสั่ง Rsync เสร็จแล้ว คุณอาจไม่จำเป็นต้องเก็บไฟล์ไว้ที่ระบบต้นทางอีกต่อไป ในกรณีนี้ ใช้คำสั่ง Linux Rsync ด้านล่างเพื่อลบไฟล์จากต้นทาง:

rsync --remove-source-files -zvh /desktop/Cloudzy [email protected]:/home/Public

การทดสอบการซิงค์

หากคุณเพิ่งเริ่มใช้งาน Linux Rsync และยังไม่คุ้นเคยกับตัวเลือกต่าง ๆ การใช้ การทำงานแบบทดลอง เป็นวิธีที่เหมาะสม เมื่อรัน Rsync แบบ dry run คำสั่งจะไม่แก้ไขไฟล์ใด ๆ แต่จะแสดงผลลัพธ์ให้คุณดู เมื่อแน่ใจแล้วว่าต้องการรันคำสั่งจริง คุณสามารถลบตัวเลือก –ทดลองรัน ออกแล้วรันบนเทอร์มินัลได้เลย ดูคำสั่งด้านล่างเพื่อทำความเข้าใจการทำงานของ dry run เพิ่มเติม

rsync --dry-run --remove-source-files -zvh /desktop/Cloudzy [email protected]:/home/Public

สรุป: การใช้งานคำสั่ง Linux Rsync

บทความนี้อธิบายวิธีใช้งาน Linux Rsync สำหรับการถ่ายโอนไปยังเซิร์ฟเวอร์ระยะไกล (และเซิร์ฟเวอร์ภายในเครื่อง) ในหลากหลายกรณีการใช้งาน ได้แก่ ระบบมิเรอริ่ง, การสำรองข้อมูล และการคัดลอกไฟล์และไดเรกทอรีทั้งแบบในเครื่องและระยะไกลอย่างมีประสิทธิภาพ คำสั่ง Linux ที่เป็นที่รู้จักนี้ช่วยให้คุณถ่ายโอนไฟล์ได้อย่างรวดเร็ว พร้อมรองรับ SSH และการบีบอัดข้อมูล

การโฮสต์ Linux VPS

เลือกแพ็กเกจ Linux VPS แบบประหยัดหรือพรีเมียมสำหรับโฮสต์เว็บไซต์หรือรีโมทเดสก์ท็อป ในราคาที่คุ้มค่าที่สุด VPS ทำงานบน Linux KVM เพื่อประสิทธิภาพที่สูงขึ้น และติดตั้งบนฮาร์ดแวร์ที่ทรงพลังพร้อมพื้นที่จัดเก็บ NVMe SSD เพื่อความเร็วสูงสุด

อ่านเพิ่มเติม

คุณสามารถใช้งานระบบปฏิบัติการนี้ได้อย่างเต็มประสิทธิภาพด้วยการเลือก Linux VPS จาก Cloudzy ซึ่งให้บริการโฮสติงบน KVM คุณจะได้รับบริการ VPS ที่มีประสิทธิภาพสูงพร้อม uptime 99.95% ความเสถียรสูง เวลาแฝงต่ำ ดาต้าเซ็นเตอร์ทั่วโลก 12 แห่ง พื้นที่จัดเก็บ SSD ความเร็วสูง และทีมซัพพอร์ตพร้อมให้บริการตลอด 24 ชั่วโมง 7 วัน คุณสามารถเริ่มต้นใช้งาน Linux VPS ได้ในราคา $4.95 และอัปเกรดได้เมื่อต้องการประสิทธิภาพที่สูงขึ้น

คำถามที่พบบ่อย

Rsync ใช้พอร์ต TCP ใด

SSH ใช้พอร์ต 22 เป็นค่าเริ่มต้น ดังนั้นเมื่อรัน rsync ผ่าน SSH จะทำงานบนพอร์ตนี้ ในทางกลับกัน เมื่อใช้งาน Rsync daemon จะใช้พอร์ต 873

Rsync คืออะไร

Rsync เป็นยูทิลิตี Linux ที่ใช้ซิงโครไนซ์ไฟล์และไดเรกทอรีได้ทั้งแบบระยะไกลและในเครื่อง คุณสามารถใช้คำสั่ง Rsync สำหรับงานที่เกี่ยวข้องกับข้อมูลหลากหลายรูปแบบ เช่น การซิงโครไนซ์ การคัดลอก และการสำรองข้อมูล

แชร์

บทความอื่นจากบล็อก

อ่านต่อ

ภาพประกอบสำหรับ Cloudzy ในคู่มือ MikroTik L2TP VPN แสดงแล็ปท็อปที่เชื่อมต่อกับ Server Rack ผ่านอุโมงค์ดิจิทัลสีฟ้าและทองพร้อมไอคอนโล่ป้องกัน
ความปลอดภัยและเครือข่าย

การตั้งค่า MikroTik L2TP VPN (พร้อม IPsec): คู่มือ RouterOS (2026)

ในการตั้งค่า MikroTik L2TP VPN นี้ L2TP ทำหน้าที่สร้าง Tunnel ส่วน IPsec ดูแลการเข้ารหัสและความสมบูรณ์ของข้อมูล การใช้งานร่วมกันช่วยให้รองรับ Native Client ได้โดยไม่ต้องพึ่งพาซอฟต์แวร์ของบุคคลที่สาม

เรกซา ไซรัสเรกซา ไซรัส อ่าน 9 นาที
หน้าต่าง Terminal แสดงข้อความเตือน SSH เกี่ยวกับการเปลี่ยนแปลง Remote Host Identification พร้อมหัวข้อ Fix Guide และแบรนด์ Cloudzy บนพื้นหลังสีเขียวเทาเข้ม
ความปลอดภัยและเครือข่าย

คำเตือน: Remote Host Identification Has Changed และวิธีแก้ไข

SSH คือโปรโตคอลเครือข่ายที่ปลอดภัย สร้างช่องเชื่อมต่อที่เข้ารหัสระหว่างระบบ ยังคงเป็นที่นิยมในหมู่นักพัฒนาที่ต้องการเข้าถึงเครื่องระยะไกลโดยไม่จำเป็นต้องใช้อินเทอร์เฟซแบบกราฟิก

เรกซา ไซรัสเรกซา ไซรัส อ่าน 10 นาที
ภาพประกอบคู่มือแก้ปัญหา DNS พร้อมสัญลักษณ์เตือนและเซิร์ฟเวอร์สีฟ้าบนพื้นหลังมืด สำหรับข้อผิดพลาด Name Resolution ของ Linux
ความปลอดภัยและเครือข่าย

Temporary Failure in Name Resolution คืออะไร และแก้ไขอย่างไร?

ขณะใช้งาน Linux คุณอาจพบข้อผิดพลาด Temporary Failure in Name Resolution เมื่อพยายามเปิดเว็บไซต์ อัปเดตแพ็กเกจ หรือรันงานที่ต้องใช้การเชื่อมต่ออินเทอร์เน็ต

เรกซา ไซรัสเรกซา ไซรัส อ่าน 12 นาที

พร้อม Deploy แล้วหรือยัง? เริ่มต้นที่ $2.48/เดือน

Cloud อิสระ ให้บริการมาตั้งแต่ปี 2008. AMD EPYC, NVMe, 40 Gbps. คืนเงินภายใน 14 วัน