Lệnh rsync qua SSH là một trong những phương pháp Linux thực tiễn nhất để di chuyển nhanh chóng, an toàn và không bị gián đoạn giữa hai máy chủ. Đặc biệt khi chuyển các tệp web có kích thước hàng trăm GB, sao lưu, thư mục phương tiện hoặc dữ liệu ứng dụng, rsync chỉ truyền tải các khối thay đổi, do đó mang lại lợi thế tốc độ đáng kể so với các phương pháp sao chép cổ điển. Nguyên tắc sử dụng cơ bản là: các tệp trên máy chủ nguồn được đồng bộ hóa một cách mã hóa qua kênh SSH tới máy chủ đích; nếu kết nối bị ngắt, quá trình có thể tiếp tục từ điểm dừng.
Trong các hoạt động chuyển máy chủ, nâng cấp hosting, thay đổi trung tâm dữ liệu hoặc sao lưu, tốc độ cũng như tính toàn vẹn dữ liệu đều rất quan trọng. Việc tải xuống một kho lưu trữ lớn và tải lên lại sẽ không chỉ tốn thời gian mà còn có thể khiến bạn phải bắt đầu lại từ đầu khi có lỗi kết nối. Tại đây, rsync giúp bảo toàn dấu thời gian tệp, quyền truy cập, thông tin sở hữu và cấu trúc thư mục. Vì lý do này, nó thường được ưa chuộng trong các hoạt động hàng ngày bởi các quản trị viên hệ thống Linux, đội ngũ DevOps và chuyên gia hosting web.
Trong hướng dẫn này, chúng ta sẽ xem xét quy trình di chuyển tệp lớn giữa hai máy chủ Linux qua SSH bằng lệnh rsync, với các ví dụ lệnh thực tế từng bước. Chúng tôi cũng sẽ chia sẻ các tham số tăng cường hiệu suất, kiểm tra bảo mật, kịch bản lỗi, phương pháp truyền thử nghiệm và những điểm cần lưu ý trước khi chuyển sang môi trường sản xuất. Nếu bạn đang lên kế hoạch chuyển sang một VPS hoặc môi trường hosting mới, hãy đảm bảo rằng máy chủ nguồn và máy chủ đích của bạn có đủ dung lượng ổ đĩa, quyền truy cập SSH và quyền người dùng chính xác trước khi thực hiện hướng dẫn này. Để lựa chọn cơ sở hạ tầng phù hợp, hãy tham khảo Giải pháp máy chủ VPS Hostragons và Gói Hosting Linux.
rsync Là Gì và Tại Sao Nên Sử Dụng Để Chuyển Tệp Lớn?
rsync là một công cụ dòng lệnh mạnh mẽ được thiết kế để đồng bộ hóa các tệp và thư mục giữa hệ thống cục bộ hoặc các máy chủ từ xa. Đặc điểm quan trọng nhất của nó là thuật toán chuyển giao delta. Thuật toán này chỉ chuyển các phần thay đổi của tệp thay vì gửi lại toàn bộ tệp mỗi lần. Ví dụ, nếu một tệp sao lưu có kích thước 80 GB chỉ có 2 GB thay đổi, trong điều kiện thích hợp, có thể chỉ cần truyền tải các khối thay đổi thay vì toàn bộ tệp.
SSH giúp mã hóa quá trình truyền tải. Do đó, lệnh rsync không gửi nội dung tệp dưới dạng văn bản thuần khi truyền dữ liệu qua mạng. Tính năng này đặc biệt quan trọng đối với dữ liệu khách hàng, bản ghi đơn hàng thương mại điện tử, kho phương tiện, sao lưu cơ sở dữ liệu và tệp ứng dụng đặc biệt. Trong thế giới hosting, bảo mật dữ liệu không chỉ giới hạn ở chứng chỉ SSL; kênh truyền tải giữa các máy chủ cũng phải an toàn. Khi sử dụng cho lưu lượng truy cập web, bạn nên sử dụng Chứng Chỉ SSL, và trong chuyển giao tệp giữa các máy chủ, mã hóa bằng SSH cũng nên được ưu tiên.
rsync linh hoạt hơn so với các phương pháp FTP hoặc tải xuống-tải lên thủ công. Nó có thể bảo toàn quyền truy cập, chuyển tải các liên kết tượng trưng, có thể xóa các tệp đã xóa tại máy đích, giới hạn băng thông và có thể kiểm tra những gì sẽ được thực hiện trước khi chuyển. Mức độ kiểm soát này mang lại lợi thế nghiêm trọng trong các quy trình di chuyển tệp lớn có rủi ro.
Khi Nào Nên Sử Dụng Lệnh rsync Qua SSH?
Lệnh rsync qua SSH đặc biệt lý tưởng cho việc chuyển các tệp lớn, số lượng lớn hoặc thường xuyên thay đổi. Đối với một thư mục hình ảnh đơn giản, SFTP thủ công có thể đủ; nhưng khi có hàng ngàn tệp, quyền truy cập khác nhau và các kho lưu trữ lớn, rsync trở thành một lựa chọn đáng tin cậy hơn nhiều.
- Khi bạn đang chuyển một trang web từ máy chủ cũ sang máy chủ VPS mới.
- Khi bạn đang chuyển các thư mục chứa hàng ngàn tệp phương tiện như thư mục uploads của WordPress.
- Khi bạn đang sao chép các bản sao lưu hàng ngày, hàng tuần hoặc hàng tháng sang một máy chủ khác.
- Khi bạn đang thay đổi trung tâm dữ liệu hoặc nhà cung cấp hosting.
- Khi bạn đang đồng bộ hóa các tệp ứng dụng giữa môi trường sản xuất và sao lưu.
- Khi bạn đang lên kế hoạch cho các chuyển giao kéo dài với nguy cơ bị ngắt kết nối.
Chẳng hạn, việc tải một thư mục phương tiện có kích thước 250 GB về máy tính để bàn của bạn và sau đó tải lên máy chủ mới có nghĩa là bạn phải thực hiện hai lần chuyển. Điều này không chỉ kéo dài tổng thời gian mà còn có thể làm tắc nghẽn kết nối internet tại nhà hoặc văn phòng của bạn. Với rsync, bạn có thể thực hiện chuyển trực tiếp từ máy chủ nguồn đến máy chủ đích, loại bỏ bước trung gian này.
Những Điều Cần Làm Trước Khi Bắt Đầu
Để thực hiện một quy trình rsync thành công, chỉ biết lệnh là không đủ. Kiểm tra các điều kiện của máy chủ nguồn và máy chủ đích giúp giảm thiểu rủi ro mất dữ liệu hoặc chuyển tải không hoàn chỉnh trong quá trình thực hiện. Dưới đây là các kiểm tra cần phải được thực hiện trong các môi trường sản xuất.
1. Xác Minh Quyền Truy Cập SSH
Phải có thể thiết lập kết nối SSH từ máy chủ nguồn đến máy chủ đích. Kết nối tiêu chuẩn có thể được kiểm tra như sau: ssh user@ip-may-chu-dich. Nếu SSH chạy trên một cổng khác, kết nối có thể được thử nghiệm với: ssh -p 2222 user@ip-may-chu-dich. Nếu kiểm tra này không thành công, rsync cũng sẽ không hoạt động. Cần kiểm tra tường lửa, Fail2ban, cổng SSH, quyền người dùng và xác thực mật khẩu hoặc khóa.
2. Kiểm Tra Đã Cài Đặt Gói rsync
Phần lớn các bản phân phối Linux đều đã cài sẵn rsync; tuy nhiên vẫn cần kiểm tra. Trên các hệ thống dựa trên Debian và Ubuntu, có thể sử dụng lệnh rsync --version. Nếu chưa cài, có thể cài đặt bằng lệnh apt install rsync. Đối với các bản phân phối như AlmaLinux, Rocky Linux hoặc CentOS, có thể sử dụng lệnh dnf install rsync hoặc yum install rsync. Nếu bạn đang sử dụng VPS dựa trên Linux trên Hostragons, quá trình cài đặt thường chỉ mất vài giây.
3. Tính Toán Dung Lượng Đĩa
Nếu trên máy chủ đích không có đủ không gian trống, quá trình chuyển sẽ bị dừng lại. Để xem kích thước thư mục nguồn, có thể sử dụng lệnh du -sh /thumuc/nguon. Trên máy đích, cần kiểm tra tình trạng đĩa bằng lệnh df -h. Thực tế, không chỉ cần không gian bằng kích thước tệp, mà cũng cần để lại một phần cho các tệp tạm thời và log. Ví dụ, nếu bạn đang chuyển 500 GB dữ liệu, tốt nhất nên lên kế hoạch cho ít nhất 550-600 GB không gian sử dụng được trên máy đích.
4. Lập Kế Hoạch Cho Các Dịch Vụ Quan Trọng và Tệp Thay Đổi
Các tệp có thể thay đổi trong quá trình chuyển khi trang web đang hoạt động. Đặc biệt, các tải lên của người dùng, thư mục cache và các tệp log thường xuyên được cập nhật. Trong các chuyển lớn, trước tiên nên chuyển dữ liệu chính, sau đó vào chế độ bảo trì để thực hiện một lệnh rsync cuối cùng. Bằng cách này, thời gian gián đoạn có thể giảm xuống chỉ còn vài phút. Đối với các trang WordPress, bạn có thể hoàn thành kế hoạch công việc của mình với các nội dung hỗ trợ như Hướng dẫn chuyển hosting WordPress.
Câu Lệnh rsync Cơ Bản: Chuyển Tệp Giữa Hai Máy Chủ
Cấu trúc cơ bản thường được sử dụng là: rsync -avz /thumuc/nguon/ user@ip-dich:/thumuc/dich/. Trong đó, -a là chế độ lưu trữ và cố gắng bảo toàn các thông tin như quyền truy cập, dấu thời gian và liên kết tượng trưng. -v cung cấp đầu ra chi tiết. -z áp dụng nén trong quá trình chuyển. Dấu gạch chéo ở cuối thư mục là một chi tiết quan trọng. Nếu bạn viết /thumuc/nguon/, nội dung của thư mục đó sẽ được sao chép đến máy đích; nếu viết /thumuc/nguon, thư mục đó sẽ được tạo dưới máy đích.
Hãy cùng xem xét một kịch bản ví dụ: Bạn muốn chuyển 180 GB tệp web từ thư mục /var/www/site/public_html/ trên máy chủ cũ sang thư mục /var/www/site/public_html/ trên máy chủ mới. Lệnh sẽ hoạt động như sau: rsync -avz /var/www/site/public_html/ root@203.0.113.20:/var/www/site/public_html/. Quy trình này sẽ chuyển các tệp từ máy chủ nguồn đến máy chủ đích qua SSH.
Nếu bạn không muốn sử dụng root, việc tạo một người dùng đặc biệt có quyền ghi vào thư mục tương ứng trên máy chủ đích là an toàn hơn. Ví dụ, bạn có thể sử dụng người dùng có tên deploy và điều chỉnh quyền sở hữu thư mục cho phù hợp. Trong môi trường sản xuất, việc thực hiện thao tác trực tiếp với root có thể tiện lợi, nhưng từ góc độ bảo mật, nên sử dụng người dùng có quyền hạn hạn chế.
Các Tham Số rsync An Toàn và Bền Bỉ Được Đề Xuất
Trong các chuyển tệp lớn, chỉ sử dụng lệnh cơ bản không phải lúc nào cũng là lựa chọn đúng đắn. Cần sử dụng thêm các tham số cho các trường hợp ngắt kết nối, tệp không hoàn chỉnh, các thao tác xóa sai hoặc mạng chậm. Lệnh dưới đây là một điểm khởi đầu vững chắc cho nhiều kịch bản chuyển thực tế:
rsync -aHAXv --numeric-ids --partial --progress --append-verify -e ssh /thumuc/nguon/ user@ip-dich:/thumuc/dich/
Trong lệnh này, -a giúp bảo toàn chế độ lưu trữ, -H bảo toàn thông tin liên kết cứng, -A bảo toàn quyền ACL, và -X giúp bảo toàn các thuộc tính mở rộng. --numeric-ids dựa trên ID giá trị thay vì tên người dùng và nhóm; điều này có thể hữu ích khi tên người dùng khác nhau trên các máy chủ khác nhau. --partial giữ lại các tệp chưa hoàn thành mà không xóa chúng. --progress hiển thị trạng thái chuyển. --append-verify giúp xác minh phần được thêm vào khi tiếp tục từ vị trí dừng, đặc biệt hữu ích cho các tệp lớn.
Mỗi tham số có thể không cần thiết trên mọi hệ thống. Ví dụ, trong một chuyển trang web đơn giản, việc sử dụng -aHAX có thể là đủ, trong khi trong một ứng dụng sử dụng quyền tệp đặc biệt, việc bảo toàn thông tin ACL và thuộc tính mở rộng trở nên quan trọng. Do đó, thực hiện một chuyển thử nghiệm trước là rất quan trọng.
Nếu Bạn Sử Dụng Cổng SSH Khác, Lệnh Nên Là Gì?
Để bảo mật, cổng SSH có thể chạy trên một cổng khác thay vì 22. Trong trường hợp này, tham số SSH được chỉ định trong rsync. Ví dụ: rsync -avz -e ssh -p 2222 /thumuc/nguon/ user@ip-dich:/thumuc/dich/. Tuy nhiên, giá trị của tham số -e phải được sử dụng cùng nhau trong dòng lệnh. Nguyên tắc sử dụng đúng là: rsync -avz -e 'ssh -p 2222' /thumuc/nguon/ user@ip-dich:/thumuc/dich/.
Do việc sử dụng dấu nháy đơn trong JSON và một số bảng điều khiển có thể hành xử khác, hãy đảm bảo rằng bạn sử dụng đúng dấu nháy khi nhập trực tiếp trong terminal. Nếu bạn đang kết nối bằng khóa SSH, tham số -i cũng có thể được thêm vào: rsync -avz -e 'ssh -p 2222 -i /root/.ssh/id_rsa' /thumuc/nguon/ user@ip-dich:/thumuc/dich/. Phương pháp này thường được sử dụng trong các công việc sao lưu tự động và dựa trên cron.
Kiểm Tra Trước Khi Chuyển: Sử Dụng --dry-run
Một trong những bước chuyên nghiệp nhất trước khi di chuyển dữ liệu lớn là sử dụng --dry-run. Tham số này không thực sự sao chép các tệp; nó chỉ hiển thị những tệp nào sẽ được chuyển. Bằng cách này, bạn có thể phát hiện trước các đường dẫn sai, đường dẫn đích không chính xác hoặc các thao tác xóa không mong muốn.
Lệnh kiểm tra ví dụ: rsync -avz --dry-run /var/www/site/ user@ip-dich:/var/www/site/. Bạn sẽ thấy các tệp sẽ được chuyển, các thư mục sẽ được tạo và tóm tắt quá trình. Nếu bạn sẽ sử dụng tham số --delete, dry-run còn trở nên quan trọng hơn. Bởi vì --delete có thể xóa các tệp không có trên máy nguồn tại máy đích. Khi được sử dụng đúng, nó tạo ra một bản sao y hệt; nhưng khi được sử dụng trên đường dẫn sai, nó có thể dẫn đến mất dữ liệu nghiêm trọng.
Trình tự ứng dụng chuyên nghiệp thường như sau: đầu tiên kiểm tra SSH, sau đó kiểm tra dung lượng đĩa, tiếp theo là chạy rsync --dry-run, thực hiện kiểm tra thực tế với một thư mục nhỏ, sau đó bắt đầu chuyển chính. Cách tiếp cận này có thể mất thêm vài phút nhưng ngăn chặn các chuyển giao sai lầm kéo dài hàng giờ.
Các Cài Đặt Nén, Băng Thông và Mã Hóa Để Tăng Hiệu Suất
Hiệu suất của rsync không chỉ phụ thuộc vào kích thước tệp. Sức mạnh CPU của máy chủ, loại đĩa, độ trễ mạng, băng thông và số lượng tệp cũng quan trọng. Nhiều tệp nhỏ có thể được chuyển chậm hơn so với một tệp lớn duy nhất, bởi vì mỗi tệp đều phải thực hiện các thao tác metadata. Hiệu suất quét và ghi tệp trên môi trường VPS có đĩa NVMe có thể tốt hơn đáng kể. Do đó, nếu bạn đang lên kế hoạch cho một chuyển lớn, việc xem xét các tùy chọn server VPS NVMe là hợp lý.
Tham số nén -z có thể mang lại lợi ích cho các tệp văn bản, log và một số loại sao lưu. Tuy nhiên, trong các tệp đã được nén như zip, tar.gz, jpg, mp4 hoặc gzip, nén có thể tiêu tốn CPU mà không mang lại nhiều lợi ích. Khi chuyển các tệp phương tiện lớn giữa hai máy chủ mạnh mẽ có kết nối 1 Gbps, bạn có thể đạt được hiệu suất tốt hơn mà không cần sử dụng -z. Ngược lại, trong các tệp nặng về văn bản và băng thông thấp, -z có thể tiết kiệm đáng kể.
Để giới hạn băng thông, bạn có thể sử dụng --bwlimit. Ví dụ, --bwlimit=50000 sẽ giới hạn ở mức khoảng 50 MB/s. Điều này rất quan trọng để không làm nghẽn lưu lượng mạng của trang web đang hoạt động. Việc thực hiện chuyển với tốc độ tối đa trong giờ cao điểm trên máy chủ sản xuất có thể ảnh hưởng xấu đến trải nghiệm của người dùng. Lập kế hoạch chuyển trong giờ đêm, đặt giới hạn băng thông và theo dõi các giá trị load average trong quá trình thực hiện là những cách thực hành tốt.
So Sánh rsync, scp, SFTP và FTP

Có nhiều phương pháp để chuyển tệp, nhưng mỗi phương pháp có những điểm mạnh và điểm yếu khác nhau. Bảng dưới đây tóm tắt phương pháp nào là phù hợp nhất trong các kịch bản chuyển tệp lớn và máy chủ.
| Phương Pháp | Bảo Mật | Tiếp Tục Từ Điểm Dừng | Hiệu Suất Tệp Lớn | Ứng Dụng Tốt Nhất |
|---|---|---|---|---|
| rsync + SSH | Cao | Mạnh Mẽ | Rất Tốt | Chuyển máy chủ, sao lưu, đồng bộ hóa |
| scp | Cao | Có Hạn | Trung Bình | Chuyển nhanh số lượng ít tệp |
| SFTP | Cao | Tùy Thuộc Vào Khách Hàng | Trung Bình | Quản lý tệp thủ công |
| FTP | Thấp | Tùy Thuộc Vào Khách Hàng | Biến Đổi | Nếu Bảo Mật Không Quan Trọng |
Như bảng trên cho thấy, rsync đặc biệt nổi bật trong các đồng bộ hóa lặp lại và chuyển dữ liệu lớn. scp đơn giản và dễ sử dụng nhưng không mạnh mẽ trong việc phát hiện các tệp thay đổi như rsync. FTP không phù hợp với các tiêu chuẩn bảo mật hiện đại khi không sử dụng mã hóa. Mặc dù quyền truy cập FTP trong các bảng điều khiển hosting có thể tiện lợi, nhưng trong các chuyển giao quan trọng giữa các máy chủ, các phương pháp dựa trên SSH nên được ưu tiên.
Quy Trình Làm Việc Ví Dụ Để Chuyển Trang Web Đang Hoạt Động
Khi chuyển một trang web từ máy chủ cũ sang máy chủ mới, mục tiêu không chỉ là sao chép các tệp. Cần kiểm tra DNS, cơ sở dữ liệu, chứng chỉ SSL, phiên bản PHP, quyền tệp và cấu hình email. Dưới đây là quy trình làm việc ví dụ cho một trang web có tệp lớn với ít gián đoạn.
- Chuẩn bị máy chủ mới với web server, PHP, cơ sở dữ liệu và các module cần thiết.
- Giảm giá trị TTL DNS của tên miền xuống mức thấp như 300 giây trước khi chuyển. Bạn có thể tham khảo Tra cứu tên miền và quản lý tên miền để quản lý tên miền.
- Bắt đầu chuyển rsync đầu tiên khi trang web đang hoạt động. Giai đoạn này sẽ chuyển hầu hết dữ liệu lớn.
- Sao lưu cơ sở dữ liệu và chuyển đến máy chủ mới.
- Đưa trang vào chế độ bảo trì trong thời gian ngắn.
- Thực hiện lệnh rsync thứ hai để đồng bộ hóa các tệp cuối cùng đã thay đổi.
- Cập nhật cơ sở dữ liệu hoặc sử dụng chiến lược gia tăng.
- Kiểm tra quyền tệp, khả năng mở trang và log trên máy chủ mới.
- Cài đặt hoặc gia hạn chứng chỉ SSL. Bạn có thể tham khảo Cài đặt chứng chỉ SSL cho điều này.
- Chuyển hướng các bản ghi DNS đến địa chỉ IP mới.
Trong phương pháp này, việc chuyển tệp chính diễn ra trong khi trang vẫn hoạt động. Gián đoạn chỉ xảy ra trong quá trình đồng bộ hóa cuối cùng và chuyển DNS. Đối với các trang WordPress có kho phương tiện lớn, cách tiếp cận này có thể giảm thời gian gián đoạn từ nhiều giờ xuống chỉ còn vài phút.
Kiểm Tra Tính Toàn Vẹn Dữ Liệu
Khi quá trình chuyển hoàn tất, chỉ việc lệnh kết thúc không đủ. Cần kiểm tra số lượng tệp, kích thước và các tệp quan trọng. Để kiểm tra đơn giản, có thể so sánh kích thước thư mục trên máy nguồn và máy đích bằng lệnh du -sh. Tuy nhiên, do sự khác biệt giữa các khối hệ thống tệp, các giá trị có thể không giống hệt nhau. Để kiểm tra chi tiết hơn, rsync có thể được chạy lại với các tham số tương tự. Nếu không còn tệp mới nào để chuyển, đầu ra sẽ ở mức tối thiểu.
Để xác minh checksum, có thể sử dụng lệnh rsync -avc --dry-run /thumuc/nguon/ user@ip-dich:/thumuc/dich/. Tham số -c sẽ so sánh các tệp không chỉ bằng dấu thời gian và kích thước mà còn bằng checksum. Cần cẩn thận khi sử dụng tham số này vì nó có thể tạo ra tải CPU và đĩa lớn trong các tệp dữ liệu lớn. Việc xác minh bổ sung này sẽ mang lại sự yên tâm cho các kho lưu trữ quan trọng, các tệp dump cơ sở dữ liệu hoặc tài liệu khách hàng.
Nếu bạn đã chuyển một trang web, hãy thực hiện kiểm tra ở cấp độ ứng dụng. Cần kiểm tra trang chủ, bảng điều khiển quản trị, tải lên hình ảnh, trang thanh toán, biểu mẫu liên hệ và log lỗi.
Các Lỗi Thường Gặp và Giải Pháp
Lỗi Permission Denied
Lỗi này thường xảy ra do quyền truy cập của người dùng SSH, quyền ghi vào thư mục đích hoặc xác thực khóa. Đầu tiên, hãy thử kết nối SSH bình thường với cùng một người dùng. Nếu kết nối thành công, hãy thử tạo một tệp trong thư mục đích. Nếu cần, hãy sử dụng chown để cấp quyền sở hữu thư mục cho người dùng liên quan hoặc lập kế hoạch một chiến lược dựa trên sudo.
Lỗi No Space Left on Device
Khi không còn đủ không gian trên đĩa đích, quá trình chuyển sẽ dừng lại. Kiểm tra các phân vùng đĩa bằng lệnh df -h. Đôi khi, đĩa chính không đầy nhưng /tmp hoặc điểm gắn kết đích đã đầy. Trong các chuyển lớn, có thể xóa các tệp log, các bản sao lưu cũ và các thư mục cache. Để giải pháp lâu dài, có thể cần nâng cấp đĩa hoặc chuyển sang gói VPS có dung lượng lớn hơn.
Lỗi Connection Reset hoặc Broken Pipe
Trong các chuyển kéo dài, có thể gặp ngắt kết nối mạng. Nếu bạn đang sử dụng --partial và --append-verify, bạn có thể chạy lại lệnh để tiếp tục từ vị trí dừng. Ngoài ra, các cài đặt keepalive SSH có thể giúp đỡ. Ở phía máy khách, một cài đặt như ServerAliveInterval 60 có thể giảm thiểu việc ngắt kết nối khi không hoạt động.
Chuyển Chậm
Tình trạng chậm có thể do số lượng tệp, giới hạn I/O đĩa, tải nén hoặc khả năng mạng. Nếu có rất nhiều tệp nhỏ, việc tạo một tệp tar có thể nhanh hơn trong một số trường hợp; nhưng trong trường hợp này, lợi ích của rsync trong việc phát hiện thay đổi tệp sẽ giảm. Trong các tệp lớn và đã nén, hãy thử loại bỏ tham số -z. Ngoài ra, hãy sử dụng các công cụ như iotop, htop và iftop để xác định xem nghẽn cổ chai nằm ở phía CPU, đĩa hay mạng.
Các Thực Hành Tốt Nhất Về Bảo Mật
Khi thực hiện chuyển tệp giữa các máy chủ, bảo mật không nên bị bỏ qua. Đặc biệt, quyền truy cập root, các khóa SSH và các tệp sao lưu nên được coi là nhạy cảm. Đầu tiên, nên sử dụng khóa SSH thay vì đăng nhập bằng mật khẩu. Quyền của các tệp khóa nên được giữ kín, không chia sẻ các khóa riêng và nếu có thể, nên được bảo vệ bằng passphrase.
Việc tạo một người dùng tạm thời cho việc chuyển giao và chỉ cấp quyền truy cập vào các thư mục cần thiết là một phương pháp tốt. Sau khi hoàn thành, có thể xóa quyền của người dùng này hoặc vô hiệu hóa tài khoản. Việc giới hạn quyền truy cập SSH chỉ cho các địa chỉ IP cụ thể cũng làm giảm bề mặt tấn công. Các quy tắc tường lửa, Fail2ban và phiên bản OpenSSH cập nhật nên nằm trong số các kiểm tra cơ bản.
Nếu chuyển các tệp dump cơ sở dữ liệu, tài liệu khách hàng hoặc các kho lưu trữ chứa dữ liệu cá nhân, các tệp tạm thời không cần thiết trên cả nguồn và đích nên được xóa sau khi chuyển. Thêm vào đó, việc để lại các tệp sao lưu như .sql, .zip hoặc .tar trong thư mục gốc của web là một rủi ro bảo mật nghiêm trọng. Các tệp này nên được lưu trữ trong một thư mục không cho phép truy cập web hoặc bị xóa sau khi quá trình hoàn tất.
Sử Dụng rsync Để Sao Lưu Tự Động
rsync không chỉ được sử dụng cho việc chuyển một lần mà còn cho việc sao lưu định kỳ. Ví dụ, một tác vụ cron có thể được định nghĩa để gửi một thư mục cụ thể đến máy chủ sao lưu mỗi đêm. Trong kịch bản này, một kết nối an toàn nhưng không có mật khẩu được thiết lập bằng khóa SSH, rsync chỉ chuyển các tệp đã thay đổi và có thể áp dụng giới hạn băng thông.
Nguyên tắc ví dụ: rsync -a --delete --bwlimit=30000 /var/www/site/ backup@ip-sao-luu:/backup/site/. Lệnh này có thể đồng bộ hóa thư mục đích với nguồn. Tuy nhiên, do tham số --delete, nên sử dụng cẩn thận. Nếu một tệp bị xóa trên nguồn, nó cũng sẽ bị xóa trên đích. Vì lý do này, trong các chiến lược sao lưu quan trọng, nên sử dụng các giải pháp hỗ trợ snapshot, thư mục hàng ngày hoặc versioning.
Trong các hoạt động hosting, quy tắc sao lưu 3-2-1 là một tham chiếu tốt: ít nhất 3 bản sao dữ liệu, 2 môi trường khác nhau, 1 bản sao ở địa điểm khác. rsync giúp thực hiện phần sao chép giữa các máy chủ của chiến lược này một cách thực tiễn. Để có một cơ sở hạ tầng toàn diện hơn, bạn có thể củng cố kế hoạch của mình với các nội dung từ Giải pháp sao lưu và dịch vụ hosting doanh nghiệp.
Danh Sách Kiểm Tra Cuối Cùng
Trước khi bắt đầu quá trình di chuyển tệp lớn, việc thực hiện danh sách ngắn dưới đây sẽ giảm thiểu rủi ro sai sót. Danh sách này nên trở thành quy trình tiêu chuẩn trong các môi trường sản xuất.
- rsync đã được cài đặt trên cả máy nguồn và máy đích chưa?
- Kết nối SSH đã được kiểm tra đúng người dùng và cổng chưa?
- Có đủ dung lượng đĩa trên máy đích không?
- Quá trình đầu tiên đã được kiểm tra bằng --dry-run chưa?
- Chế độ bảo trì và kế hoạch đồng bộ cuối cùng cho trang web đang hoạt động đã được lập không?
- Nếu sẽ sử dụng --delete, đường dẫn đích đã được xác thực chính xác chưa?
- Có thực hiện kiểm tra kích thước tệp, quyền truy cập và kiểm tra ứng dụng sau khi chuyển không?
- Có xóa tệp sao lưu tạm thời và tệp dump một cách an toàn không?
Các kiểm tra này có vẻ đơn giản nhưng trong thực tế, những vấn đề thường gặp nhất thường đến từ đường dẫn đích sai, quyền hạn thiếu, không đủ dung lượng đĩa và chuyển DNS không theo kế hoạch. Một quy trình rsync có kế hoạch sẽ không chỉ rút ngắn thời gian di chuyển mà còn tăng khả năng phục hồi.
Các Câu Hỏi Thường Gặp
Khi kết nối bị ngắt qua lệnh rsync qua SSH, quá trình chuyển có bắt đầu lại từ đầu không?
Không, nếu sử dụng đúng tham số, quá trình sẽ không bắt đầu lại từ đầu. Các tùy chọn --partial và --append-verify giúp bảo toàn các tệp lớn chưa hoàn thành và giúp tiếp tục quá trình chuyển từ điểm dừng. Tuy nhiên, trong các chuyển quan trọng, việc kiểm tra lại dung lượng đĩa và tình trạng của các tệp chưa hoàn thành trước khi chạy lại lệnh là điều tốt.
Có thể chuyển cơ sở dữ liệu trực tiếp bằng rsync không?
rsync chỉ chuyển tệp; việc sao chép trực tiếp các tệp cơ sở dữ liệu đang hoạt động là không an toàn. Đối với MySQL hoặc MariaDB, nên sử dụng mysqldump hoặc các công cụ sao lưu vật lý, sau đó chuyển tệp sao lưu đó đến máy chủ đích bằng rsync. Trong các hệ thống đang hoạt động, cần có kế hoạch chế độ bảo trì hoặc chiến lược sao chép để đảm bảo tính nhất quán dữ liệu.
Có cần quyền root trên cả hai máy chủ để sử dụng rsync không?
Quyền root không phải là điều kiện cần thiết. Một người dùng có quyền ghi vào thư mục đích là đủ. Tuy nhiên, nếu cần bảo toàn quyền sở hữu tệp, các thư mục hệ thống, ACL hoặc quyền đặc biệt, có thể cần quyền cao hơn. Về mặt bảo mật, tốt hơn là thực hiện các thao tác với người dùng có quyền hạn hạn chế khi có thể.
Tham số --delete có an toàn không?
Tham số --delete rất hữu ích khi được sử dụng đúng để đồng bộ hóa thư mục đích với nguồn; nhưng nếu được sử dụng trên đường dẫn sai, nó có thể dẫn đến mất dữ liệu. Do đó, các lệnh chứa --delete phải luôn được kiểm tra trước bằng --dry-run, và đường dẫn nguồn và đích phải được xác minh cẩn thận.
Trong chuyển tệp lớn, rsync hay scp tốt hơn?
Trong các chuyển nhỏ một lần, scp có thể đủ; nhưng đối với các tệp lớn, số lượng lớn tệp và các đồng bộ hóa lặp lại, rsync thường tốt hơn. Điều này là do rsync có thể phát hiện các tệp thay đổi, tiếp tục các chuyển chưa hoàn thành, giới hạn băng thông và cung cấp chế độ thử nghiệm.
Tóm Tắt và Bước Tiếp Theo
Việc di chuyển tệp lớn giữa hai máy chủ bằng lệnh rsync qua SSH là một phương pháp nhanh chóng, an toàn và dễ quản lý. Nó có thể chịu đựng sự ngắt kết nối bằng các tham số đúng, chỉ chuyển các tệp đã thay đổi để tiết kiệm thời gian và giảm thiểu gián đoạn trong quá trình chuyển trang web đang hoạt động. Để có kết quả tốt nhất, hãy thực hiện kiểm tra SSH và dung lượng đĩa trước, thử nghiệm bằng --dry-run, sau đó lập kế hoạch chuyển chính một cách có tổ chức.
Nếu bạn đang lên kế hoạch chuyển sang một máy chủ mới, lưu trữ có dung lượng cao hơn hoặc cơ sở hạ tầng hosting hiệu suất cao hơn, hãy xem xét các giải pháp của Hostragons; với các lựa chọn VPS, hosting, tên miền và SSL phù hợp với nhu cầu của bạn, bạn có thể làm cho quá trình chuyển đổi của mình an toàn hơn. Bắt đầu với các thử nghiệm nhỏ, đo lường và thực hiện chuyển đồng bộ cuối cùng một cách có kế hoạch.