ปกติเวลาเราใช้ 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]
กรอกรายละเอียดตามที่ระบบแจ้ง ตามตัวอย่าง
3. กำหนดกลุ่ม ให้ user (ทำหรือไม่ก็ได้ขึ้นอยู่กับไฟล์ที่ต้องการ 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
โค้ด: เลือกทั้งหมด
usermod -aG root mindphp_backup
4.ตรวจสอบ การสร้าง user
โค้ด: เลือกทั้งหมด
grep mindphp_backup /etc/passwd
เสร็จแล้วทดลอง Login ด้วย ssh ด้วย user ใหม่และรหัสผ่านที่เราตั้งไว้ในข้อ 2mindphp_backup1005:,,,:/home/mindphp_backup :/bin/bash
Server ปลายทาง สร้าง ssh-keygen
ไว้สำหรับให้ระบบใช้แทนการกรอก user, password ในการ Login เข้าเครื่อง Server ต้นทาง
1. Login ด้วย user เข้าเครื่องปลายทางด้วย ssh (ใช้ user ที่จะใช้สำหรับไว้สำรองข้อมูลของเครื่องปลายทาง ไม่ใช่ server ต้นทางนะครับ)
2. สร้าง SSH key ด้วยคำสั่งตามนี้
โค้ด: เลือกทั้งหมด
ssh-keygen -t rsa
- id_rsa เป็นไฟล์ private key
- id_rsa.pub เป็นไฟล์ public key
ทั้งสองไฟล์จะอยู่ใน folder .ssh
3. copy ไฟล์ public key ไปยังเครื่อง Server ต้นทาง ด้วยคำสั่ง
โค้ด: เลือกทั้งหมด
ssh-copy-id [newuser]@remote_server
โค้ด: เลือกทั้งหมด
ssh [newuser]@remote_server
การสำหรับข้อมูลด้วย rsync สามารถใช้คำสั่งด้วยตามบทความนี้ "ทำ Backup Server ด้วย rsync ใช้ ssh Transfer ย้ายไฟล์ข้ามเซิร์ฟเวอร์ "
ตัวอย่าง คำสั่งที่ผมใช้บ่อย
โค้ด: เลือกทั้งหมด
rsync -avz -e 'ssh -p 22' [newuser]@remote_server:/home/fullbaclup /backup/folder_backup/