Rsync là một công cụ được tạo ra như là một phần của dự án Samba cung cấp chuyển tập tin nhanh chóng. Nó phục vụ như một sự thay thế cho các công cụ scp và rcp. Rsync là một cách tuyệt vời để tải lên tập tin vào một máy chủ từ xa, đặc biệt là khi bạn cần các máy tính từ xa để duy trì một bản sao hiện hành của các tập tin local , bởi vì rsync rất hiệu quả trong việc chuyển dữ liệu qua mạng. Có rất nhiều công việc có thể được thực hiện bằng cách sử dụng rsync. Điều này bao gồm việc sao lưu tập tin vào một máy chủ từ xa, và giữ hai máy chủ được đồng bộ. Bạn thậm chí có thể sử dụng rsync để di chuyển các máy chủ đến các nhà cung cấp khác. Hướng dẫn này cung cấp một cái nhìn tổng quan của rsync cùng với các ví dụ về rsync. Cài đặt Rsync Hầu hết các bản phân phối Linux hiện đại đều cung cấp cài đặt rsync từ kho phần mềm. Trên Debian / Ubuntu sử dụng lệnh sau: Mã: apt-get install rsync Trên CentOS và Fedroa, sử dụng lệnh sau: Mã: yum install rsync Thông thường, rsync sử dụng SSH như một tầng để mã hóa lưu lượng qua mạng. Mặc dù có thể sử dụng rsync ẩn danh (anonymous) để đồng bộ hóa các tập tin từ một máy tính từ xa mà không cần SSH. Chúng tôi khuyên bạn nên thiết lập các khóa SSH để tạo điều kiện chuyển giao giữa các máy. Để cấu hình các khóa SSH, thực hiện lệnh sau trên hệ thống địa phương: Mã: ssh-keygen Trả lời các câu hỏi của câu lệnh đưa ra. Điều này sẽ tạo ra một khóa SSH bằng cách sử dụng thuật toán RSA. Nếu bạn muốn sử dụng các thuật toán DSA, thêm -t dsa đến câu lệnh trên. Khóa SSH của bạn sẽ được tạo ra với khóa riêng trong ~/.ssh/id_rsa và khóa công khai trong ~/.ssh/id_rsa.pub. Bạn sẽ sao chép khóa công khai vào tập tin ~ /.ssh/authorized_keys trên máy tính từ xa, sử dụng các lệnh sau: (thay thế user SSH và tên máy chủ của riêng bạn). Mã: scp ~/.ssh/id_rsa.pub user@hostname.com:/home/user/.ssh/uploaded_key.pub ssh user@hostname.com "echo `cat ~/.ssh/uploaded_key.pub` >> ~/.ssh/authorized_keys" Bạn có thể sử dụng quá trình này để tạo các khóa SSH cho các máy chủ của bạn để làm cho nó có thể để rsync các tập tin giữa hai máy từ xa thông qua một kết nối an toàn, mà không cần phải nhập mật khẩu cho máy. Lệnh rsync Sau khi cài đặt, chúng ta hãy tìm hiểu về lệnh rsync. Các tùy chọn cho lệnh rsync bao gồm việc sử dụng cơ bản nhất được thể hiện sau đây: -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 --delete: xóa dữ liệu ở destination nếu source không tồn tại dữ liệu đó. --exclude: loại trừ ra những dữ liệu không muốn truyền đi, nếu bạn cần loại ra nhiều file hoặc folder ở nhiều đường dẫn khác nhau thì mỗi cái bạn phải thêm --exclude tương ứng. Có rất nhiều lựa chọn khác của lệnh rsync, bao gồm các tính năng tiên tiến như hạn chế tốc độ băng thông. Bạn có thể xem danh sách đầy đủ các tùy chọn này bằng cách dùng câu lệnh sau: Mã: rsync –help Khi các tùy chọn đã được thiết lập xong, cung cấp đích đến cho việc chuyển dữ liệu. Bạn có thể sử dụng rsync để đồng bộ hóa hai thư mục local để thực hiện sao lưu local hiệu quả. Các vị trí cũng có thể được xác định bằng cách sử dụng SSH/SCP cú pháp sau: Mã: server@example.com:/home/username/dir/ Trong ví dụ này, server đại diện cho tên user là server , example.com đại diện cho tên miền máy chủ từ xa, và cuối cùng là /home/server/dir/ là đường dẫn đến các tập tin nguồn. Đối với hoạt động rsync từ xa, nguồn hoặc đích có thể được điều khiển từ xa, tùy thuộc vào thứ tự của chúng. Ví dụ lệnh rsync Sử dụng rsync để triển khai nội dung lên trên mạng Mã: rsync -zr /home/username/wiki/ username@web.example.com:/home/username/public/wiki Các tùy chọn -z và -r đã được kích hoạt để duyệt thư mục /wiki, sao chép tập tin từ thư mục wiki/ và nén các file trong quá trình chuyển giao. Tập tin local đã được sao chép từ thư mục /home/username/wiki tới thư mục /home/username/public/wiki trên web.example.com. Bạn có thể kết hợp lệnh này với các lệnh khác, bao gồm cả sed, để tự động hóa hơn nữa quá trình triển khai. Sử dụng rsync để sao lưu Production Environments Rsync là một công cụ tuyệt vời cho việc duy trì một bản sao lưu của một production environment. Như rsync hoạt động trên cả hai loại tập tin nhị phân và văn bản, chúng ta có thể sử dụng lệnh rsync để giữ thiết lập các tập tin đồng bộ giữa nhiều hơn một máy tính. Kết quả là, hệ thống sao lưu sẽ luôn luôn có những nội dung mới nhất. Lưu ý: lệnh rsync sao chép tập tin đến hoặc từ hệ thống tập tin local cho hệ thống tập tin local hoặc từ xa. Để sao chép các tập tin giữa hai máy chủ từ xa, bạn sẽ phải thực thi các lệnh rsync trên một trong các máy từ xa thông qua SSH. Mã: ssh username@web.example.com rsync -a /home/username/public/wiki \ fore@web-backup.example.com:/home/fore/public/wiki Lệnh này được thực hiện trên máy tính cục bộ, sao chép thư mục /home/username/public/wiki (với tùy chọn -a kích hoạt cho chế độ lưu trữ) trên máy chủ web.example.com vào thư mục /home/fore/public/wiki trên máy chủ web-backup.example.com. Bạn cũng có thể sao lưu một production environment đến hệ thống tập tin local với lệnh sau đây: Mã: rsync -rz username@web.example.com:/home/username/public/wiki \ /home/robin/web-backups/duck-wiki Lệnh này tạo ra một bản sao lưu của /home/username/public/wiki trên máy chủ web.example.com trong thư mục local /home/robin/web-backups/duck-wiki. Các vị trí trong lệnh này có thể được hoán đổi để sao lưu một tập hợp các tập tin địa local cho một máy tính từ xa. Sử dụng tùy chọn -a nếu bạn muốn giữ các quyền và sở hữu tập tin sau hoạt động đồng bộ. Bạn cũng có thể kết hợp các lệnh rsync với cron để chạy một bản sao lưu thường xuyên để đảm bảo rằng các bản sao lưu của bạn được cập nhật liên tục.