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

วิธีใช้ Rsync ใน Linux Rsync to Remote Server 💻📥

Lily Carnell โดย Lily Carnell 10 นาทีในการอ่าน อัปเดตเมื่อ Apr 16, 2023
rsync to remote server

ไม่ว่าคุณจะเป็นผู้ดูแลระบบหรือผู้ใช้ทั่วไป การสำรองข้อมูลและซิงก์ไฟล์ระหว่างหลายระบบเป็นงานที่ต้องทำอยู่สม่ำเสมอ หากต้องคัดลอกไฟล์ทั้งหมดทุกครั้ง งานนี้จะเสียเวลาและน่าเบื่อหน่ายมาก นั่นคือจุดที่เครื่องมือ 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 Hosting

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

อ่านต่อ

คุณสามารถใช้งานระบบปฏิบัติการนี้ได้อย่างเต็มประสิทธิภาพด้วยการเลือก 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 สำหรับงานที่เกี่ยวข้องกับข้อมูลหลากหลายรูปแบบ เช่น การซิงโครไนซ์ การคัดลอก และการสำรองข้อมูล

Share

บทความเพิ่มเติมจากบล็อก

อ่านต่อ

Best self-hosted VPN solutions guide: WireGuard, Tailscale, Hiddify compared by use case
ความปลอดภัยและเครือข่าย

โซลูชัน VPN ที่โฮสต์เองที่ดีที่สุด ข้อดีข้อเสีย กรณีการใช้งาน และรายละเอียดเฉพาะทาง

Self-hosted VPN solutions compared by use case: privacy exit node, team mesh, and anti-censorship. WireGuard, Tailscale, Hiddify, and honest trade-offs.

Jonas 16 นาทีในการอ่าน
What is a VPN router: how it works, the four ways to run one, and when a VPS gateway is the better choice.
ความปลอดภัยและเครือข่าย

VPN Router คืออะไร? มันทำงานอย่างไรและเมื่อไหร่ที่คุณต้องใช้

VPN router รัน VPN software บนตัว router เพื่อให้ทุกอุปกรณ์ได้รับ tunnel โดยอัตโนมัติ มันทำงานอย่างไร ควรใช้เมื่อไหร่ และเมื่อไหร่ที่ VPS เหมาะกว่า

Jonas 16 นาทีในการอ่าน

พร้อมติดตั้งหรือยัง? เริ่มต้น $2.48/เดือน

คลาวด์อิสระ ตั้งแต่ปี 2008 AMD EPYC, NVMe, 40 Gbps คืนเงินภายใน 14 วัน