Cách backup dữ liệu vào dịch vụ lưu trữ đối tượng với ứng dụng khách backup Restic
Restic là một ứng dụng backup an toàn và hiệu quả được viết bằng ngôn ngữ Go. Nó có thể backup các file local vào một số kho backend khác nhau như folder local , server SFTP hoặc dịch vụ lưu trữ đối tượng tương thích S3.Trong hướng dẫn này, ta sẽ cài đặt Restic và khởi tạo một repository trên một dịch vụ lưu trữ đối tượng. Sau đó, ta sẽ backup một số file vào repository . Cuối cùng, ta sẽ tự động hóa các bản backup của bạn để chụp ảnh nhanh hàng giờ và tự động cắt các ảnh chụp nhanh cũ khi cần thiết.
Yêu cầu
Đối với hướng dẫn này, bạn cần một máy tính dựa trên UNIX với một số file bạn muốn backup . Mặc dù Restic có sẵn cho Mac, Linux và Windows, các lệnh và kỹ thuật được sử dụng trong hướng dẫn này sẽ chỉ hoạt động trên MacOS và Linux.
Restic yêu cầu dung lượng bộ nhớ tốt để chạy, bạn nên có RAM từ 1GB trở lên để tránh lỗi nhận.
Bạn cũng cần biết các chi tiết sau về dịch vụ lưu trữ đối tượng của bạn :
- Khóa truy cập
- Chìa khoá bí mật
- URL server
- Tên group
Nếu bạn đang sử dụng dịch vụ lưu trữ đối tượng DigitalOcean Spaces , bạn có thể cài đặt Không gian và nhận tất cả thông tin trên theo hướng dẫn của ta Cách tạo DigitalOcean và Khóa API .
Khi bạn đã có thông tin lưu trữ đối tượng của bạn , hãy chuyển sang phần tiếp theo để cài đặt phần mềm Restic.
Cài đặt ứng dụng client dự phòng Restic
Restic có sẵn dưới dạng file thực thi được biên dịch trước cho nhiều nền tảng. Điều này nghĩa là ta có thể download một file duy nhất và chạy nó, không cần trình quản lý gói hoặc phụ thuộc.
Để tìm đúng file cần download , trước tiên hãy sử dụng trình duyệt web để chuyển đến trang phát hành của Restic trên GitHub . Bạn sẽ tìm thấy danh sách các file trong tiêu đề Download .
Đối với hệ thống Linux 64 bit (môi trường server phổ biến nhất), bạn muốn file kết thúc bằng _linux_amd64.bz2
.
Đối với MacOS, hãy tìm file có _darwin_amd64.bz2
.
Nhấp chuột phải vào file chính xác cho hệ thống của bạn, sau đó chọn Sao chép địa chỉ liên kết (từ ngữ có thể hơi khác trong trình duyệt của bạn). Thao tác này sẽ sao chép URL download vào clipboard của bạn.
Tiếp theo, trong phiên terminal trên máy tính bạn đang backup (nếu đó là máy từ xa, trước tiên bạn có thể cần đăng nhập qua SSH), hãy đảm bảo bạn đang ở trong folder chính của bạn , sau đó download file bằng curl
:
- cd ~
- curl -LO https://github.com/restic/restic/releases/download/v0.7.3/restic_0.7.3_linux_amd64.bz
Extract file ta đã download :
- bunzip2 restic*
Sau đó sao chép file vào /usr/local/bin
và cập nhật các quyền của file để file có thể thực thi được. Ta cần sử dụng sudo
cho hai hành động này, vì user bình thường không có quyền ghi vào /usr/local/bin
:
- sudo cp restic* /usr/local/bin/restic
- sudo chmod a+x /usr/local/bin/restic
Kiểm tra xem cài đặt có thành công không bằng cách gọi lệnh restic
không có đối số:
- restic
Một số văn bản trợ giúp sẽ in ra màn hình của bạn. Nếu vậy, hệ binary restic
đã được cài đặt đúng cách. Tiếp theo, ta sẽ tạo một file cấu hình cho Restic, sau đó khởi tạo repository đối tượng của ta .
Tạo file cấu hình
Restic cần biết khóa truy cập, khóa bí mật, chi tiết kết nối lưu trữ đối tượng và password repository của ta để khởi tạo repository mà ta có thể backup . Ta sẽ cung cấp thông tin này cho Restic bằng cách sử dụng các biến môi trường .
Các biến môi trường là các bit thông tin mà bạn có thể xác định trong shell của bạn , các biến này được chuyển đến các chương trình bạn chạy. Ví dụ: mọi chương trình bạn chạy trên dòng lệnh đều có thể thấy biến môi trường $PWD
của bạn, biến này chứa đường dẫn của folder hiện tại.
Việc đặt các mã thông báo và password nhạy cảm trong các biến môi trường là một thực tế phổ biến, vì việc chỉ định chúng trên dòng lệnh không an toàn. Vì ta sẽ tự động hóa các bản backup của bạn sau này, nên ta sẽ lưu thông tin này vào một file mà tập lệnh của ta có thể truy cập.
Đầu tiên, hãy mở một file trong folder chính của bạn:
- nano ~/.restic-env
Thao tác này sẽ mở một file trống bằng editor nano
. Khi ta hoàn tất, file sẽ bao gồm bốn lệnh export
. Các câu lệnh export
này xác định các biến môi trường và cung cấp chúng cho bất kỳ chương trình nào bạn chạy trong tương lai:
export AWS_ACCESS_KEY_ID="your-access-key" export AWS_SECRET_ACCESS_KEY="your-secret-key" export RESTIC_REPOSITORY="s3:server-url/bucket-name" export RESTIC_PASSWORD="a-strong-password"
Các khóa truy cập và khóa bí mật sẽ được cung cấp bởi dịch vụ lưu trữ đối tượng của bạn. Bạn có thể cần tạo một bộ khóa duy nhất chỉ dành cho Restic, để có thể dễ dàng thu hồi quyền truy cập trong trường hợp khóa bị mất hoặc bị xâm phạm.
Giá trị RESTIC_REPOSITORY
sẽ là: s3:nyc3.digitaloceanspaces.com/example-bucket
. Nếu bạn cần kết nối với server trên cổng không chuẩn hoặc qua chỉ HTTP không an toàn, hãy đưa thông tin đó vào URL như s3:http://example-server:3000/example-bucket
.
RESTIC_PASSWORD
xác định password mà Restic sẽ sử dụng để mã hóa các bản backup của bạn. Mã hóa này diễn ra local , vì vậy bạn có thể backup vào một server ngoại vi không tin cậy mà không lo nội dung file của bạn bị lộ.
Bạn nên chọn một password mạnh ở đây và sao chép nó vào nơi an toàn để backup . Một cách để tạo password ngẫu nhiên mạnh là sử dụng lệnh openssl
:
- openssl rand -base64 24
Outputj8CGOSdz8ibUYK137wtdiD0SJiNroGUp
Điều này xuất ra một chuỗi ngẫu nhiên gồm 24 ký tự, bạn có thể sao chép và paste vào file cấu hình.
Khi tất cả các biến được điền đúng cách, hãy lưu file .
Khởi tạo Kho lưu trữ
Để tải cấu hình vào môi trường shell của ta , ta source
file ta vừa tạo:
- source ~/.restic-env
Bạn có thể kiểm tra đảm bảo điều này hoạt động bằng cách in ra một trong các biến:
- echo $RESTIC_REPOSITORY
URL repository của bạn sẽ được in ra. Bây giờ ta có thể khởi tạo repository của bạn bằng lệnh Restic:
- restic init
Outputcreated restic backend 57f73c1afc at s3:nyc3.digitaloceanspaces.com/example-bucket Please note that knowledge of your password is required to access the repository. Losing your password means that your data is irrecoverably lost.
Kho lưu trữ hiện đã sẵn sàng để nhận dữ liệu backup . Ta sẽ gửi dữ liệu đó tiếp theo.
Backup một folder
Bây giờ repository đối tượng từ xa của ta đã được khởi tạo, ta có thể đẩy dữ liệu backup vào đó. Ngoài mã hóa, Restic thực hiện khác biệt và khử trùng lặp trong khi backup . Điều này nghĩa là bản backup đầu tiên của ta sẽ là bản backup đầy đủ của tất cả các file và các bản backup tiếp theo sẽ chỉ phải truyền các file mới và các thay đổi. Ngoài ra, dữ liệu trùng lặp sẽ được phát hiện và không được ghi vào phần backend , giúp tiết kiệm dung lượng.
Trước khi ta backup , nếu bạn đang thử nghiệm mọi thứ trên hệ thống trống và cần một số file mẫu để backup , hãy tạo một file văn bản đơn giản trong folder chính của bạn:
- echo "sharks have no organs for producing sound" >> ~/facts.txt
Điều này sẽ tạo ra một file tin facts.txt
. Bây giờ backup nó, cùng với phần còn lại của folder chính của bạn:
- restic backup ~
Outputscan [/home/sammy] scanned 4 directories, 14 files in 0:00 [0:04] 100.00% 2.558 MiB/s 10.230 MiB / 10.230 MiB 18 / 18 items 0 errors ETA 0:00 duration: 0:04, 2.16MiB/s snapshot 427696a3 saved
Restic sẽ hoạt động trong một thời gian ngắn, hiển thị cho bạn các cập nhật trạng thái trực tiếp trong suốt quá trình, sau đó xuất ra ID của ảnh chụp nhanh mới (được đánh dấu ở trên).
Lưu ý: Nếu bạn muốn backup một folder khác, hãy thay thế dấu ~
ở trên bằng đường dẫn của folder . Bạn có thể cần sử dụng sudo
trước restic backup
nếu folder đích không thuộc sở hữu của user của bạn. Nếu bạn cần sudo
để backup , hãy nhớ sử dụng lại nó khi khôi phục ảnh chụp nhanh, nếu không bạn có thể gặp một số lỗi về việc không thể cài đặt quyền đúng cách.
Tiếp theo, ta sẽ tìm hiểu cách tìm hiểu thêm thông tin về các ảnh chụp nhanh được lưu trữ trong repository lưu trữ của ta .
Ảnh chụp nhanh danh sách
Để liệt kê các bản backup được lưu trữ trong repository lưu trữ, hãy sử dụng lệnh con snapshots
:
- restic snapshots
OutputID Date Host Tags Directory ---------------------------------------------------------------------- 427696a3 2017-10-23 16:37:17 restic-test /home/sammy
Bạn có thể thấy ID ảnh chụp nhanh mà ta nhận được trong lần backup đầu tiên, dấu thời gian cho thời điểm ảnh chụp nhanh được chụp, tên server , thẻ và folder đã được backup .
Cột Thẻ của ta trống, vì ta không sử dụng bất kỳ thẻ nào trong ví dụ này. Bạn có thể thêm thẻ vào ảnh chụp nhanh bằng cách thêm cờ --tag
theo sau là tên thẻ. Bạn có thể chỉ định nhiều thẻ bằng cách lặp lại tùy chọn --tag
.
Thẻ có thể hữu ích để lọc ảnh chụp nhanh sau này khi bạn cài đặt policy lưu giữ hoặc khi tìm kiếm thủ công một ảnh chụp nhanh cụ thể để khôi phục.
Server lưu trữ có trong danh sách vì bạn có thể gửi ảnh chụp nhanh từ nhiều server lưu trữ đến một repository duy nhất. Bạn cần sao chép password repository vào từng máy. Bạn cũng có thể cài đặt nhiều password cho repository của bạn để kiểm soát quyền truy cập chi tiết hơn. Bạn có thể tìm hiểu thêm thông tin về việc quản lý password repository trong tài liệu chính thức của Restic .
Bây giờ ta đã tải lên ảnh chụp nhanh và biết cách liệt kê nội dung repository của bạn , ta sẽ sử dụng ID ảnh chụp nhanh của bạn để kiểm tra khôi phục bản backup .
Khôi phục Ảnh chụp nhanh
Ta sẽ khôi phục toàn bộ ảnh chụp nhanh vào một folder tạm thời để xác minh mọi thứ đang hoạt động bình thường. Sử dụng ID ảnh chụp nhanh từ danh sách ở bước trước. Ta sẽ gửi các file đã khôi phục đến một folder mới trong /tmp/restore
:
- restic restore 427696a3 --target /tmp/restore
Outputrestoring <Snapshot 427696a3 of [/home/sammy] at 2017-10-23 16:37:17.573706791 +0000 UTC by sammy@restic-test> to /tmp/restore
Thay đổi folder và liệt kê nội dung của nó:
- cd /tmp/restore
- ls
Bạn sẽ thấy folder mà ta đã backup . Trong ví dụ này, nó sẽ là folder chính của sammy user . Nhập folder đã khôi phục và liệt kê các file bên trong:
- cd sammy
- ls
Outputfacts.txt restic_0.7.3_linux_amd64
facts.txt
của ta ở đó, cùng với file binary restic mà ta đã extract ở phần đầu của hướng dẫn. In file facts.txt
ra màn hình đảm bảo đó là những gì ta mong đợi:
- cat facts.txt
Bạn sẽ thấy sự thật về cá mập mà ta đã đưa vào file trước đây. Nó đã làm việc!
Lưu ý: Nếu bạn không muốn khôi phục lại tất cả các file trong một bản chụp, bạn có thể sử dụng --include
và --exclude
tùy chọn để tinh chỉnh lựa chọn của bạn. Đọc phần Khôi phục của tài liệu Restic để tìm hiểu thêm.
Bây giờ ta biết backup và khôi phục đang hoạt động, hãy tự động tạo các ảnh chụp nhanh mới.
Tự động hóa backup
Restic bao gồm một lệnh forget
để giúp duy trì một repository ảnh chụp nhanh đang chạy. Bạn có thể sử dụng restic forget --prune
để đặt các policy về số lượng bản backup cần giữ hàng ngày, hàng giờ, hàng tuần, v.v. Các bản backup không phù hợp với policy sẽ bị xóa khỏi repository .
Ta sẽ sử dụng dịch vụ hệ thống cron
để chạy tác vụ backup mỗi giờ. Đầu tiên, hãy mở crontab của user của bạn:
- crontab -e
Bạn có thể được yêu cầu chọn một editor . Chọn yêu thích của bạn - hoặc nano
nếu bạn không có ý kiến - sau đó nhấn ENTER
. Crontab mặc định cho user của bạn sẽ mở ra trong editor của bạn. Nó có thể có một số comment giải thích cú pháp crontab. Ở cuối file , thêm phần sau vào một dòng mới:
. . . 42 * * * * . /home/sammy/.restic-env; /usr/local/bin/restic backup -q /home/sammy; /usr/local/bin/restic forget -q --prune --keep-hourly 24 --keep-daily 7
Hãy bước qua lệnh này. 42 * * * *
xác định thời điểm cron
nên chạy tác vụ. Trong trường hợp này, nó sẽ chạy ở phút thứ 42 của mỗi giờ , ngày , tháng và ngày trong tuần . Để biết thêm thông tin về cú pháp này, hãy đọc hướng dẫn của ta Cách sử dụng Cron Để Tự động hóa Công việc .
Tiếp theo . / home/sammy /.restic-env;
tương đương với source ~/.restic-env
mà ta đã chạy trước đây để tải các khóa và password vào môi trường shell của ta . Điều này có tác dụng tương tự trong crontab của ta : các lệnh tiếp theo trên dòng này sẽ có quyền truy cập vào thông tin này.
/usr/local/bin/restic backup -q / home/sammy ;
là lệnh backup Restic của ta . Ta sử dụng đường dẫn đầy đủ đến binary restic
, vì dịch vụ cron
sẽ không tự động tìm kiếm các lệnh trong /usr/local/bin
. Tương tự, ta đánh vần rõ ràng đường dẫn folder chính bằng /home/sammy
thay vì sử dụng phím tắt ~
. Tốt nhất là càng rõ ràng càng tốt khi viết lệnh cho cron
. Ta sử dụng cờ -q
để chặn kết quả trạng thái từ Restic, vì ta sẽ không ở gần để đọc nó.
Cuối cùng, /usr/local/bin/restic forget -q --prune --keep-hourly 24 --keep-daily 7
sẽ lược bỏ các ảnh chụp nhanh cũ không còn cần thiết dựa trên các cờ lưu giữ đã chỉ định. Trong ví dụ này, ta lưu giữ ảnh chụp nhanh 24 giờ và 7 ảnh chụp nhanh hàng ngày. Ngoài ra còn có các tùy chọn cho các policy hàng tuần, hàng tháng, hàng năm và dựa trên thẻ.
Khi bạn đã cập nhật lệnh để phù hợp với nhu cầu của bạn , hãy lưu file và thoát khỏi editor . Crontab sẽ được cài đặt và kích hoạt. Sau một vài giờ, hãy chạy lại restic snapshots
để xác minh ảnh chụp nhanh mới đang được tải lên.
Kết luận
Trong hướng dẫn này, ta đã tạo file cấu hình cho Restic với các chi tiết xác thực lưu trữ đối tượng của ta , sử dụng Restic để khởi tạo repository , backup một số file và kiểm tra bản backup . Cuối cùng, ta đã tự động hóa quy trình với cron.
Restic có tính linh hoạt hơn và nhiều tính năng hơn đã được thảo luận ở đây. Để tìm hiểu thêm về Restic, hãy xem tài liệu chính thức hoặc trang web chính của họ .
Các tin liên quan