Cách sử dụng lệnh rsync trong Linux
Trong bài này mình sẽ hướng dẫn cài đặt và sử dụng lệnh rsyns trong Linux, đây là lệnh dùng để sao chép giữa liệu giữa các hệ thống, nói cách khác là nó dùng để đồng bộ dữ liệu giữa hai hệ thống.
rsync là một công cụ command line rất linh hoạt, nó giúp đồng bộ các file và thư mục giữa hai máy tính hoặc hai vị trí trên một máy tính một cách nhanh chóng thông qua một remote shell. Điểm đặc biệt là nó sẽ so sánh hai file giữa hai hệ thống và chỉ đồng bộ những điểm khác nhau giúp việc truyền tải nhanh hơn.
1. Cài đặt Rsync package
Tiện ích rsync đã được cài đặt sẵn trên hầu hết các bản phân phối của Linux và macOS. Nếu trong máy của bạn không có thì hãy chạy lệnh sau để cài đặt từ kho lưu trữ:
sudo apt install rsync
sudo yum install rsync
2. Cú pháp lệnh rsync trong Linux
Trước khi tìm hiểu cách sử dụng rsync command thì hãy xem qua cú pháp của nó trước nhé, nó sẽ có dạng như sau:
Bài viết này được đăng tại [free tuts .net]
Local to Local: rsync [OPTION]... [SRC]... DEST Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]
Trong đó:
- OPTION là những tùy chọn, bạn có thể xem chi tiết hơn ở phần dưới.
- SRC là thư mục nguồn.
- DEST là thư mục đích.
- USER là remote username.
- HOST là remote host name hoặc địa chỉ IP
OPTIONS là những tùy chọn dùng để kiểm soát lệnh rsync, cụ thể như sau:
- -a, --archive, chế độ lưu trữ, tương đương với -rlptgoD. Tùy chọn này yêu cầu rsync đồng bộ hóa các thư mục một cách đệ quy, transfer tất cả symbolic links, group, phân quyền.
- -z, - compress. Tùy chọn này buộc rsync nén dữ liệu khi nó được gửi đến máy đích. Chỉ sử dụng tùy chọn này nếu đường truyền kết nối với máy từ xa không được tốt.
- -P, --partial --progress. Khi tùy chọn này được sử dụng thì rsync sẽ hiển thị thanh tiến trình trong quá trình truyền dữ liệu. Nó rất hữu ích khi chuyển các tệp file qua kết nối mạng chậm hoặc không ổn định.
- --delete. Khi tùy chọn này được sử dụng, rsync sẽ xóa các file không liên quan khỏi vị trí đích.
- -q, --quiet. Sử dụng tùy chọn này nếu bạn muốn loại bỏ các thông báo không lỗi.
- -e. Tùy chọn này cho phép bạn chọn một kiểu remote khác. Theo mặc định, rsync được định cấu hình để remote qua ssh.
3. Cách sử dụng lệnh rsync trong Linux
Cách sử dụng cơ bản nhất là copy một file tự vị trí này sang vị trí khác trong cung một mạng cục bộ.
rsync -a /opt/filename.zip /tmp/
Lưu ý rằng tài khoản đang đăng nhập phải có quyền đọc trên file nguồn và ghi trên file đích.
Nếu bạn muốn đặt một cái tên khác khi copy thì sử dụng cú pháp sau:
rsync -a /opt/filename.zip /tmp/newfilename.zip
Sức mạnh thực sự của rsync không phải là copy file như vậy, mà là sự đồng bộ dữ liệu giữa hai nơi.
Đoạn code dưới đây mình đã tạo một bản backup của website:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Khi chạy lệnh này thì tất cả những file có trong thư mục public_html sẽ có trong thư mục public_html_backup.
Trường hợp thư mục không tồn tai thì lệnh rsync sẽ tự động tạo.
4. Sử dụng lệnh rsync trong Linux để truyền dữ liệu từ xa
Khi sử dụng rsync để truyền dữ liệu từ xa thì nó phải được cài đặt trên cả máy nguồn và máy đích. Các phiên bản mới của rsync sẽ sử dụng SSH để remote.
Trong ví dụ sau minh đang chuyển một thư mục từ một máy cục bộ sang một máy từ xa thông qua ssh.
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Nếu bạn chưa đặt đăng nhập SSH không cần mật khẩu cho máy từ xa thì bạn sẽ được yêu cầu nhập mật khẩu.
Nếu bạn muốn chuyển ngược lại dữ liệu từ máy cục bộ sang máy từ xa thì hãy hoán đổi vị trí của chúng.
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Nếu máy từ xa lắng nghê trên một port khác port 22 (port mặc định) thì hãy thiết lập cho nó bằng tùy chọn -e.
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Khi chuyển một lượng lớn dữ liệu thì bạn nên chạy lệnh rsync kết hợptùy chọn -P.
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
5. Loại trừ file và thư mục ra khỏi lệnh rsync trong Linux
Có một số trường hợp bạn không muốn đồng bộ một số file và thư mục thì hãy sử dụng tùy chọn --exclude
. Và bạn phải sử dụng đường dẫn tương đối đến vị trí nguồn nhé.
Như trong ví dụ dưới đây sẽ loại trừ thư mục node_modules và tmp.
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
Cách thứ hai là sử dụng tùy chọn --exclude-from
để chỉ định đến một file chứa danh sách các thư mục bị loại bỏ.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
Trong đó nội dung của file exclude-file.txt sẽ là:
node_modules tmp
Như vậy là mình đã hướng dẫn xong cách sử dụng lệnh rsync trong Linux, đây là lệnh rất hữu ích dùng để sao lưu và đồng bộ dữ liệu giữa hai máy trên Linux.