Đồng bộ dữ liệu giữa 2 Server sử dụng lệnh tự động điền pass hoặc qua key xác thực
Cú pháp Rsync
rsync [options] source [destination]
Đồng bộ dữ liệu bỏ qua những file đã có và xóa những file thừa ở đích
rsync -avz --update --ignore-existing --delete --recursive --delete -e <nguồn> <đích>Hoặc
rsync -avhe ssh --progress /foo/* user@remote-host:/tmp/Đồng bộ từ Local lên Remote
rsync -avz /abc/* root@110.108.0.101:/home/Hoặc đồng bộ từ REMOTE về LOCAL
rsync -avzh root@110.108.0.100:/home/abc/* /xyz
Hoặc từ Server A sang Server B
rsync -avz --delete -e 'ssh -p 65333' /data/server_a/ inetcom@14.123.45.67:/data/server_b
Lệnh trên sẽ xóa những file ở đích nếu nguồn không có
VD: Copy từ Server khác tới local
rsync -arvz -e 'ssh -p 65333' --update --ignore-existing --progress --delete test@123.45.6.7:/data/test.php /home/ubuntu/
Ghi chú:
- -v: hiển thị trạng thái kết quả
- -r: copy dữ liệu recursively, nhưng không đảm bảo thông số của file và thư mục
- -a: cho phép copy dữ liệu recursively, đồng thời giữ nguyên được tất cả các thông số của thư mục và file
- -z: nén dữ liệu khi transfer, tiết kiệm băng thông tuy nhiên tốn thêm một chút thời gian
- -h: human-readable, output kết quả dễ đọc--ignore-existing-files: Bỏ qua nếu file đã tồn tại
- --progress: Hiển thị ra màn hình quá trình đồng bộ
- --update: Chỉ đồng bộ các file có sự thay đổi
- --remove-source-files: Tự động xóa các file nguồn nếu đồng bộ xong
- --delete: Xóa các dữ liệu từ đích nếu nguồn bị xóa
Tự điền password sử dụng "sshpass"
Cài đặt thư viện sshpass
Ubuntu/Debian
Redhat/CentOS
sudo apt-get install sshpass
Redhat/CentOS
sudo yum install sshpass
Và chạy lệnh bên dưới để đồng bộ:
rsync -avz -e 'sshpass -p "PASSWORD" ssh -p 1234 -o StrictHostKeyChecking=no' root@192.168.1.50:/var/www/html/lienvu.com/images/test.js /data/backup/
Sử dụng Key Private & Public
Server chính: 192.168.1.50Server phụ: 192.168.1.51
Đồng bộ hóa dữ liệu một cách tự động thư mục /var/www/html/lienvu.com/images từ server .51 sang server .50
Đồng bộ hóa dữ liệu một cách tự động thư mục /var/www/html/lienvu.com/images từ server .51 sang server .50
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 phụ bằng quyền root
rsync -avz -e ssh root@192.168.1.50:/var/www/html/lienvu.com/images /var/www/html/lienvu.com/
Hoặc có port 1234
rsync -avz -e "ssh -p 1234" root@192.168.1.50:/var/www/html/lienvu.com/images /var/www/html/lienvu.com/Lệnh trên yêu cầu bạn nhập mật khẩu của tài khoản root.
Sau khi thực hiện thành công, bạn vào thư mục /var/www/html/lienvu.com thuộc server phụ thì sẽ thấy thư mục images đã được copy sang.
3. Tạo key xác thực không cần nhập mật khẩu khi thực hiện rsync
Truy cập vào thư mục root trên Server .51
cd /root/.ssh
ssh-keygen -t rsa
Khi yêu cầu nhập passphrase, bạn không cần điền gì cả chỉ cần nhấn Enter
Tiếp theo ta chép public key sang server .50
scp /root/.ssh/id_rsa.pub root@192.168.1.50:/root
4. 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 .50 bằng quyền root
vi /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
5. Cấu hình server .50
Thực hiện bằng quyền root
mkdir .ssh
chmod 700 .ssh
mv id_rsa.pub .ssh/
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
cat id_rsa.pub >> authorized_keys
6. Thử nghiệm rsync bằng key
Thực hiện trên server .51 bằng quyền root
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
rsync -avz --delete -e "ssh -i /root/rsync/mirror-rsync-key" root@192.168.1.50:/var/www/html/lienvu.com/images /var/www/html/lienvu.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
Nhận xét
Đăng nhận xét