Sao lưu dữ liệu bằng rsync
và scp
1. Tại sao sao lưu quan trọng?
Hôm nay tụi mình sẽ nói về một trong những nhiệm vụ quan trọng nhất cho tất cả những ai làm việc trong thế giới IT và lập trình — sao lưu dữ liệu. Nếu bạn từng mất dữ liệu quan trọng vì lỗi đĩa hay sai sót, thì bạn hiểu nó nghiêm trọng như thế nào. Còn nếu chưa từng mất — thì tụi mình ở đây để giúp bạn tránh điều đó!
Hãy tưởng tượng: bạn đã làm việc chăm chỉ trên một dự án trong vài tháng, và rồi một ngày đẹp trời, ổ cứng của bạn quyết định đình công. Đúng, điều này cũng khó chịu như quên thêm dấu chấm phẩy ở cuối câu lệnh SQL, nhưng còn tệ gấp nghìn lần. Hệ thống có thể không đáng tin cậy, con người có thể sai lầm, và các file có thể mất. Sao lưu là cách chuẩn bị sẵn sàng trước những bất ngờ không vui như vậy.
Trên Linux, có một số công cụ mạnh để thực hiện sao lưu. Hôm nay, tụi mình sẽ làm quen với hai công cụ: rsync
và scp
.
2. Lệnh rsync
: công cụ sao chép dữ liệu nhanh và thông minh
rsync
là một trong những công cụ phổ biến nhất để sao chép và đồng bộ dữ liệu. Điểm mạnh chính của nó là tốc độ và hiệu quả. Thay vì sao chép tất cả dữ liệu, rsync
chỉ sao chép các tệp đã thay đổi. Điều này làm cho nó trở nên lý tưởng cho việc sao lưu định kỳ các tập dữ liệu lớn.
Cú pháp của rsync
Đây là định dạng cơ bản của lệnh:
rsync [options] nguồn đích
Trong đó:
nguồn
— đường dẫn tới tệp hoặc thư mục mà bạn muốn sao chép.đích
— nơi bạn muốn lưu trữ dữ liệu.
Các options chính và chức năng của chúng
Dưới đây là một số options thường được sử dụng:
-a
(archive): bao gồm sao chép tất cả metadata (quyền truy cập, dấu thời gian, v.v.).-v
(verbose): hiển thị thông tin chi tiết về quá trình để bạn biết điều gì đang diễn ra.--progress
: hiển thị tiến trình khi sao chép (rất hữu ích nếu bạn sao chép các tệp lớn).--delete
: xóa các tệp ở phía đích mà không có ở phía nguồn. Rất hữu ích cho việc đồng bộ hoàn toàn.-z
(compress): nén dữ liệu trước khi truyền, giúp tăng tốc độ (đặc biệt quan trọng cho các thao tác qua mạng).
Ví dụ: sao chép dữ liệu cục bộ
Hãy tạo thư mục /backup
để lưu trữ các bản sao lưu.
mkdir /backup
Sao chép toàn bộ nội dung của thư mục /home
vào /backup
:
rsync -av /home /backup
Giải thích ví dụ này:
-a
giữ nguyên cấu trúc và quyền truy cập tệp.-v
cung cấp thông tin về quá trình thực hiện.
Nếu bạn chạy lại lệnh, nó chỉ sao chép các tệp mới hoặc đã thay đổi.
Ví dụ: sao lưu dữ liệu từ xa
Bây giờ, giả sử bạn muốn gửi bản sao lưu sang một server từ xa. Để làm điều này, rsync
hỗ trợ sử dụng SSH.
rsync -av /backup user@remote_server:/remote_backup
Trong đó:
user
— tên user trên server từ xa.remote_server
— địa chỉ của server từ xa của bạn (ví dụ, địa chỉ IP hoặc tên miền)./remote_backup
— đường dẫn trên server nơi bạn muốn lưu trữ dữ liệu.
Nếu bạn có khóa SSH để xác thực, việc truyền tệp sẽ trở nên dễ dàng (và an toàn) hơn rất nhiều.
3. Lệnh scp
: đơn giản và hiệu quả
scp
(Secure Copy Protocol) — là công cụ để sao chép tệp giữa máy cục bộ và máy từ xa. Nó dễ dùng hơn một chút so với rsync
và thích hợp cho các trường hợp không cần đồng bộ hóa toàn bộ.
Cú pháp scp
Dưới đây là định dạng cơ bản của lệnh:
scp [tuỳ chọn] nguồn đích
Trong đó:
nguồn
— đường dẫn tới tệp mà bạn muốn sao chép.đích
— địa chỉ nơi bạn muốn chuyển tới.
Các tùy chọn chính và chức năng của chúng
Một số tùy chọn hữu ích:
-r
: sao chép đệ quy cho thư mục.-C
: nén tệp trước khi truyền.-P
: chỉ định cổng SSH nếu nó khác với cổng mặc định (22).
Ví dụ: sao chép tệp lên máy từ xa
Bạn muốn truyền tệp từ máy tính cục bộ của mình lên máy chủ. Giả sử tệp có tên là document.txt
.
scp document.txt user@remote_server:/remote_folder
Nếu tệp nằm trong thư mục /home/user/documents
, lệnh sẽ như sau:
scp /home/user/documents/document.txt user@remote_server:/remote_folder
Bây giờ tệp sẽ có sẵn trên máy từ xa trong thư mục /remote_folder
.
Ví dụ: sao chép tệp từ máy chủ về máy cục bộ
Quá trình này hoạt động ngược lại:
scp user@remote_server:/remote_folder/document.txt /home/user/documents
Lúc này, tệp document.txt
sẽ xuất hiện trong thư mục cục bộ của bạn.
4. Sự khác nhau giữa rsync
và scp
Mặc dù cả hai lệnh cho phép sao chép tệp, nhưng chúng có những đặc điểm riêng.
Đặc điểm | rsync | scp |
---|---|---|
Tốc độ | Chỉ sao chép dữ liệu đã thay đổi, nhanh hơn với dung lượng lớn | Sao chép toàn bộ, kể cả khi tệp không thay đổi |
Đồng bộ hóa | Hỗ trợ đầy đủ đồng bộ hóa | Không hỗ trợ đồng bộ hóa |
Nén dữ liệu | Có -z |
Có -C |
Dễ sử dụng | Cấu hình phức tạp hơn | Giao diện đơn giản |
Vậy nên, nếu bạn chỉ cần chuyển tệp nhanh chóng — dùng scp
. Nếu cần thực hiện đồng bộ hóa thường xuyên với lượng dữ liệu lớn — chắc chắn dùng rsync
.
5. Ví dụ thực tiễn: thiết lập sao lưu
Dưới đây là một nhiệm vụ thực hành: bạn muốn thiết lập toàn bộ quy trình sao lưu dự án của mình lên một server từ xa.
Giả sử file của dự án của bạn được lưu trong thư mục
/home/user/project
. Bạn muốn chúng được sao lưu vào serverbackup.server.com
trong thư mục/backups/project
.Để việc sao chép nhanh hơn, chúng ta sẽ sử dụng
rsync
.
Thiết lập script sao lưu
Tạo file backup.sh
:
#!/bin/bash
SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"
# Thực hiện sao lưu bằng rsync
rsync -av --delete "$SOURCE" "$DESTINATION"
# Hiển thị thông báo hoàn thành
echo "Sao lưu hoàn thành!"
Chạy lệnh để biến file thành có thể thực thi:
chmod +x backup.sh
Bây giờ bạn có thể chạy script này thủ công:
./backup.sh
Hoặc thêm nó vào cron
để thực thi tự động (chúng ta sẽ nói về cron sau trong khóa học).
6. Những lỗi thường gặp và cách tránh
Đường dẫn không chính xác trong dòng lệnh. Nếu chỉ định sai đường dẫn tới các tệp,
rsync
hoặcscp
sẽ không sao chép gì cả. Hãy sử dụng các lệnhls
hoặcpwd
để đảm bảo rằng bạn đã nhập đúng đường dẫn.Không có khóa xác thực. Nếu khi sử dụng SSH mà bạn chưa thiết lập khóa, bạn sẽ luôn bị yêu cầu nhập mật khẩu. Hãy thiết lập khóa SSH để quy trình trở nên đơn giản hơn.
Dừng quá trình sao lưu. Nếu mạng không ổn định,
rsync
vẫn sẽ hoàn tất việc truyền tệp ở lần chạy tiếp theo. Nhưng vớiscp
thì bạn sẽ phải bắt đầu lại từ đầu.
Với rsync
và scp
, bạn có thể tự tin sao chép và đồng bộ dữ liệu của mình cả trên máy cục bộ lẫn trên các máy chủ từ xa. Đây là những công cụ đáng tin cậy khi nói về việc bảo vệ các tệp quan trọng.
GO TO FULL VERSION