ใช้ rsync สำรองข้อมูล ย้ายไฟล์ข้ามเซิร์ฟเวอร์โดยไม่ต้องกรอกรหัสผ่าน บน Linux Ubuntu CentOS

แชร์ความรู้ Linux Ubuntu Web Server บทความ การ config server Linux FreeBSD Apache
การติดตั้ง XAMPP Mysql PHP ใครต้องการแชร์ความรู้เรื่องต่างๆ เหล่านี้ให้ ท่านหรืออื่น โพสที่หมวดนี้ได้

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48019
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

ใช้ rsync สำรองข้อมูล ย้ายไฟล์ข้ามเซิร์ฟเวอร์โดยไม่ต้องกรอกรหัสผ่าน บน Linux Ubuntu CentOS

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ใช้ rsync สำรองข้อมูล ย้ายไฟล์ข้ามเซิร์ฟเวอร์โดยไม่ต้องกรอกรหัสผ่าน
ปกติเวลาเราใช้ rsync ในการสำรองข้อมูลข้าม Server ตามบทความที่แนะนำไปก่อนหน้านี้ "ทำ Backup Server ด้วย rsync ใช้ ssh Transfer ย้ายไฟล์ข้ามเซิร์ฟเวอร์ "
เราต้องใช้ชื่อสมาชิก และ รหัสผ่านของเครื่องปลายทาง ซึ่งมีความเสี่ยงเรื่องความปลอดภัยของ Server ปลายทางเพราะต้องเปิดใช้ ssh ผ่านการกรอก user password

วันนี้มาแนะนำอีกวิธี สำหรับการสำรองข้อมูล ตัวอย่างนี้จะใช้กับ Linux (Ubuntu, CentOS) สำหรับใครใช้ Client เป็น Windows สามารถดูที่ที่บทความนี้ " สอนสร้าง Public/Private key วิธีใช้ ssh-keygen สำหรับ Remote เข้า Server อีกเครื่องโดยไม่ต้องใช้ รหัสผ่าน"

วิธีทำตามขั้นตอนดังนี้
Server ต้นทาง
1. Server ต้นทาง Login ด้วย ssh ด้วย user ที่เป็น root หรือ user ที่สร้างมารถสร้าง user อื่นได้
2. สร้าง user ด้วยคำสั่ง

โค้ด: เลือกทั้งหมด

adduser [newuser]
โดย [newuser] คือชื่อ user ที่ต้องการ สามารถตั้งได้เอง ตัวอย่างนี้ใช้ ชื่อ mindphp_backup
กรอกรายละเอียดตามที่ระบบแจ้ง ตามตัวอย่าง
Adding user `mindphp_backup' ...
Adding new group `mindphp_backup' (1005) ...
Adding new user `mindphp_backup' (1005) with group `mindphp_backup' ...
Creating home directory `/home/mindphp_backup' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for mindphp_backup
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
3. กำหนดกลุ่ม ให้ user (ทำหรือไม่ก็ได้ขึ้นอยู่กับไฟล์ที่ต้องการ backup)

โค้ด: เลือกทั้งหมด

usermod -aG root mindphp_backup
ตามตัวอย่างเป็นการกำหนด ให้ user mindphp_backup อยู่กลุ่มเดียวกับ root
4.ตรวจสอบ การสร้าง user

โค้ด: เลือกทั้งหมด

grep mindphp_backup /etc/passwd
จะได้ข้อมูลตามด้านล่าง
mindphp_backup :x:1005:1005:,,,:/home/mindphp_backup :/bin/bash
เสร็จแล้วทดลอง Login ด้วย ssh ด้วย user ใหม่และรหัสผ่านที่เราตั้งไว้ในข้อ 2


Server ปลายทาง สร้าง ssh-keygen
ไว้สำหรับให้ระบบใช้แทนการกรอก user, password ในการ Login เข้าเครื่อง Server ต้นทาง
1. Login ด้วย user เข้าเครื่องปลายทางด้วย ssh (ใช้ user ที่จะใช้สำหรับไว้สำรองข้อมูลของเครื่องปลายทาง ไม่ใช่ server ต้นทางนะครับ)
2. สร้าง SSH key ด้วยคำสั่งตามนี้

โค้ด: เลือกทั้งหมด

ssh-keygen -t rsa 
กำหนดชื่อไฟล์ที่ต้องการ หรือใช้ค่า default ก็ได้จะได้ไฟล์ชื่อ
- id_rsa เป็นไฟล์ private key
- id_rsa.pub เป็นไฟล์ public key
ทั้งสองไฟล์จะอยู่ใน folder .ssh
3. copy ไฟล์ public key ไปยังเครื่อง Server ต้นทาง ด้วยคำสั่ง

โค้ด: เลือกทั้งหมด

ssh-copy-id [newuser]@remote_server
4. ทดลอง เข้า ssh โดยไม่ต้องกรอกรหัสผ่าน

โค้ด: เลือกทั้งหมด

ssh [newuser]@remote_server
ถ้าไม่มีให้กรอกรหัสผ่าน แสดงว่า ที่เราทำมาทั้งหมดใช้งานได้

การสำหรับข้อมูลด้วย rsync สามารถใช้คำสั่งด้วยตามบทความนี้ "ทำ Backup Server ด้วย rsync ใช้ ssh Transfer ย้ายไฟล์ข้ามเซิร์ฟเวอร์ "
ตัวอย่าง คำสั่งที่ผมใช้บ่อย

โค้ด: เลือกทั้งหมด

rsync -avz -e 'ssh -p 22' [newuser]@remote_server:/home/fullbaclup /backup/folder_backup/
สามารถดูต่อการใช้ rsync-backup ในเครื่องเดียวกัน
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48019
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ใช้ rsync สำรองข้อมูล ย้ายไฟล์ข้ามเซิร์ฟเวอร์โดยไม่ต้องกรอกรหัสผ่าน บน Linux Ubuntu CentOS

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

วิธีแก้ปัญหา
สำหรับใครที่ทำตามแต่ละข้อแล้วแต่ยังมีให้กรอก รหัสผ่าน ให้เช็คไฟล์
/home/azking_bk/.ssh/
จากข้อ 3 ว่าที่ Server ปลายทางมีไฟล์ แล้วหรือยัง ถ้ายังไม่มีให้ลองทำอีกครั้ง หรือ ลองอัพโหลดไฟล์ด้วย sftp เข้าไปก็ได้
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48019
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ใช้ rsync สำรองข้อมูล ย้ายไฟล์ข้ามเซิร์ฟเวอร์โดยไม่ต้องกรอกรหัสผ่าน บน Linux Ubuntu CentOS

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ถ้ายังมีปัญหา สามารถใช้คำสั่งทดสอบเชื่อมต่อ

โค้ด: เลือกทั้งหมด

ssh -v -i ~/.ssh/id_rsa_xxxx [email protected].***
ถ้าเจอข้อความประมาณนี้
debug1: send_pubkey_test: no mutual signature algorithm
อาจปัญหาจาก algorithm ในการเข้ารหัส
ปัญหาหนึ่งที่เกิด เพราะ เวอร์ชั่นของ ssh Server ของฝั่ง local และ Server
ตรวจสอบเวอร์ชั่นได้ดังนี้ ตัวอย่างผลที่ได้
OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13, OpenSSL 1.0.1f 6 Jan 2014
OpenSSH_8.9p1 Ubuntu-3ubuntu0.6, OpenSSL 3.0.2 15 Mar 2022
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48019
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ใช้ rsync สำรองข้อมูล ย้ายไฟล์ข้ามเซิร์ฟเวอร์โดยไม่ต้องกรอกรหัสผ่าน บน Linux Ubuntu CentOS

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

การพยายามปรับค่า config หรือ อัพเวอร์ชั่นของ ssh server อาจทำให้ remote เข้าเครื่องไม่ได้

ทิป อย่าปิด terminal หลักเด็ดขาด ถ้าปรับค่าอะไรให้ทดสอบโดยใช่ terminal ใหม่ทดสอบ !!!
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48019
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ใช้ rsync สำรองข้อมูล ย้ายไฟล์ข้ามเซิร์ฟเวอร์โดยไม่ต้องกรอกรหัสผ่าน บน Linux Ubuntu CentOS

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ถ้าต้องการ โชว์ Process การทำงาน หรือสถานะการย้ายไฟล์ใช้รูปแบบนี้ได้โดยการเพิ่ม options
--progress --human-readable
ตัวอย่างไการใช้

โค้ด: เลือกทั้งหมด

rsync -av --progress --human-readable -e ssh /home/mindphp/images.zip root@ip-server:/mnt/volume-sgp1-01
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48019
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ใช้ rsync สำรองข้อมูล ย้ายไฟล์ข้ามเซิร์ฟเวอร์โดยไม่ต้องกรอกรหัสผ่าน บน Linux Ubuntu CentOS

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ถ้ามีการโอนย้ายไฟล์หลายๆ สามารถใช้ option --info=progress2 แทนได้
ตัวอย่างเช่น

โค้ด: เลือกทั้งหมด

rsync -avz --info=progress2 --human-readable -e ssh /path/to/source/file user@destination-ip-server:/path/to/destination/
จะเห็นว่าตัวอย่างนี้เราใช้ options -avz และ ตัวอย่างก่อนหน้านี้ใช้ -av สำหรับหลายๆ
ต่างกันที่มี z และ ไม่มี ความหมายคือจะมีการบีบอัดไฟล์ก่อนมีการ transfer
แต่แนะนำว่าจะไม่เหมาะสำหรับการย้ายไฟล์ขนาดใหญ่ๆ หลัก GB ขึ้นไปเพราะจะเสียเวลาในการบีบอัด และปัจจุบันความเร็วเน็ตในการ transfer ไฟล์สูง options -z นี้ก็อาจไม่จำเป็น
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 0