Hướng dẫn đồng bộ dữ liệu bằng Rsync trên Centos

Nội dung

Mô hình:

Server chính: 192.168.1.50
Server phụ: 192.168.1.51

Yêu cầu đặt ra
:
Đồng bộ hóa dữ liệu một cách tự động thư mục /var/www/html/abc.com/images từ server chính sang server phụ

Các bước thực hiện như sau:

1. Cài đặt rsync
: Thực hiện trên cả server chính lẫn server phụ

yum install rsync

2. Tạo tài khoản thực hiện rsync: Thực hiện trên server chính bằng quyền root. Ví dụ ở đây mình tạo tài khoản tên là syntest

useradd -d /home/syntest -m -s /bin/bash syntest

Lệnh trên sẽ tạo tài khoản syntest với thư mục gốc là /home/syntest và login ở chế độ /bin/bash. Sau đó, ta tiến hành đặt mật khẩu cho tài khoản syntest bằng lệnh:

passwd syntest

3. Thử rsync: Thực hiện trên server phụ bằng quyền root

rsync -avz -e ssh syntest@192.168.1.50:/var/www/html/abc.com/images /var/www/html/abc.com/

Lệnh trên yêu cầu bạn nhập mật khẩu của tài khoản syntest. Sau khi thực hiện thành công, bạn vào thư mục /var/www/html/abc.com thuộc server phụ thì sẽ thấy thư mục images đã được copy sang.

4. Tạo key xác thực để không cần nhập mật khẩu khi thực hiện rsync: Thực hiện trên server phụ bằng quyền root

mkdir /root/rsync
ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key

Bạn sẽ thấy các kết quả như sau. Lưu ý khi yêu cầu nhập passphrase, bạn không cần điền gì cả chỉ cần nhấn Enter

Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): [press enter here]
Enter same passphrase again: [press enter here]
Your identification has been saved in /root/cron/mirror-rsync-key.
Your public key has been saved in /root/cron/mirror-rsync-key.pub.
The key fingerprint is:
68:95:35:44:91:f1:45:a4:af:3f:69:2a:ea:c5:4e:d7 root@mirror

Tiếp theo ta chép public key sang server chính

scp /root/rsync/mirror-rsync-key.pub syntest@192.168.1.50:/home/syntest/


5. Cấu hình để dịch vụ SSH chấp nhận kiểu chứng thực bằng key
: Thực hiện trên server chính bằng quyền root

vi /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

6. Cấu hình server chính: Thực hiện trên server chính bằng quyền syntest

mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/mirror-rsync-key.pub ~/.ssh/
cd ~/.ssh
touch authorized_keys
chmod 600 authorized_keys
cat mirror-rsync-key.pub >> authorized_keys

Các lệnh trên dùng để chèn nội dung của mirror-rsync-key.pub vào tập tin /home/syntest/.ssh/authorized_keys. Nội dung của tập tin authorized_keys sẽ tương tự như bên dưới:

ssh-dss AAAAB3NzaC1kc3MAAA[...]lSUom root@
mirror

7. Thử nghiệm rsync bằng key: Thực hiện trên server phụ bằng quyền root

rsync -avz --delete -e "ssh -i /root/rsync/mirror-rsync-key" syntest@192.168.1.50:/var/www/html/abc.com/images /var/www/html/abc.com

Nếu thành công thì tiến trình đồng bộ dữ liệu sẽ được thực thi mà không yêu cần bạn nhập mật khẩu

8. Lập lịch để chạy đồng bộ tự động: Thực hiện trên server phụ bằng quyền root

crontab -e

Và nhập vào nội dung như sau:

*/5 * * * * /usr/bin/rsync -avz --delete -e "ssh -i /root/rsync/mirror-rsync-key" syntest@192.168.1.50:/var/www/html/abc.com/images /var/www/html/abc.com/

Done

Anthony Nguyễn

Cây bút chính tại VietnamTutor

Bài viết cùng chuyên mục

AI viết code nhanh hơn review: kiểm soát thế nào?

Khi AI viết code nhanh hơn khả năng review của team, doanh nghiệp cần đổi cách kiểm soát chất lượng. Bài viết đưa ra framework thực

Git detached HEAD là gì? Cách thoát an toàn

Bài viết này giải thích detached HEAD trong Git, cách nhận biết trạng thái này và các bước thoát ra an toàn mà không mất code.

Rủi ro vibe coding: 9 lỗi khiến prototype khó vận hành

Bài viết này chỉ ra 9 rủi ro phổ biến khi vibe coding và cách kiểm soát để prototype không biến thành gánh nặng vận hành.

Vibe coding là gì? Cách thử ý tưởng phần mềm bằng AI

Vibe coding giúp chủ doanh nghiệp biến ý tưởng phần mềm thành prototype nhanh hơn bằng AI. Bài viết này chỉ ra khi nào nên thử,

GitHub Actions CI/CD: quy trình deploy website an toàn

Hướng dẫn xây pipeline GitHub Actions CI/CD cho website: build, test, cache dependency, đóng artifact, deploy staging/production và quản lý secret an toàn.

.gitignore không hoạt động: nguyên nhân và cách sửa

Bài viết giúp bạn kiểm tra vì sao .gitignore không hoạt động, sửa lỗi file đã tracked và dùng git check-ignore để debug pattern.

Git push bị rejected: cách sửa non-fast-forward

Bài viết giải thích vì sao git push bị rejected, cách đọc lỗi non-fast-forward và quy trình xử lý an toàn trước khi push lại.

Git reset revert restore: chọn lệnh đúng

Bài viết so sánh git reset, git revert và git restore theo mục đích sử dụng: sửa staging area, khôi phục file, undo commit chưa push

Git commit vào nhánh sai: cách chuyển an toàn

Bài viết hướng dẫn xử lý git commit vào nhánh sai theo từng tình huống: commit chưa push, đã push, nhiều commit liên tiếp hoặc branch

TypeScript cho website doanh nghiệp: API, form và lỗi

TypeScript cho website doanh nghiệp đáng dùng khi bạn cần kiểm soát API contract, form schema, CMS payload và cấu hình môi trường. Bài này giúp

React Server Components performance: khi nào nên dùng?

React Server Components performance không phải phép màu. Bài này giúp bạn biết khi nào RSC giảm JavaScript thật, khi nào làm kiến trúc phức tạp

Git commit nhầm file: bỏ file khỏi commit an toàn

Bài viết hướng dẫn xử lý git commit nhầm file theo từng tình huống: chưa commit, đã commit chưa push, đã push lên remote, hoặc lỡ