Tổng quát
Mặc dù Vultr có một hệ thống sao lưu cho toàn bộ hình ảnh hệ thống, nhưng điều này hoạt động ở cấp độ khối và yêu cầu sao lưu được khôi phục thành VM trước khi dữ liệu có thể được khôi phục. Ngoài ra, các bản sao lưu chỉ được lưu trữ trong một khoảng thời gian ngắn và không cung cấp giải pháp sao lưu gia tăng thực sự.
Nhập trùng lặp - Bản sao được xây dựng dựa trên rsync huyền thoại và cung cấp khả năng lưu trữ các bản sao lưu gia tăng cùng với mã hóa dữ liệu ở phần còn lại thông qua GPG. Nó tuân thủ Posix và chỉ chuyển các vùng đồng bằng giữa các lần chạy sao lưu, do đó giảm yêu cầu băng thông chung.
Thiết lập môi trường
Thuật ngữ
- Máy chủ nguồn - Máy chủ sẽ sao lưu dữ liệu. Đối với hướng dẫn này, nó có địa chỉ IP: 10.1.10.1
- Máy chủ dự phòng - Máy chủ đích để sao lưu. Đối với hướng dẫn này, nó có địa chỉ IP: 10.1.10.2
- / backupdir - Thư mục nguồn trên máy chủ nguồn được sử dụng để sao lưu trong hướng dẫn này. Bạn có thể thay đổi điều này để phù hợp với môi trường của bạn.
- / Destdir - Thư mục đích trên máy chủ sao lưu được sử dụng để sao lưu trong hướng dẫn này. Bạn có thể thay đổi điều này để phù hợp với môi trường của bạn.
- Sao lưu toàn bộ - Toàn bộ bản sao của bộ dữ liệu nguồn.
- Sao lưu cộng dồn - Sao chép tất cả các thay đổi được thực hiện kể từ lần sao lưu cuối cùng.
Cài đặt trùng lặp
Ubuntu 14.04:
sudo apt-get update
sudo apt-get install duplicity python-paramiko
CentOS (yêu cầu EPEL):
sudo yum install duplicity python-paramiko
Ubuntu 12.04 / Debian 7:
sudo apt-get update
sudo apt-get install ncftp python-paramiko python-pycryptopp lftp python-boto python-dev librsync-dev
wget https://launchpad.net/duplicity/0.7-series/0.7.02/+download/duplicity-0.7.02.tar.gz
tar xzvf duplicity*
cd duplicity*
sudo python setup.py install
Chúng tôi phải cài đặt từ nguồn dưới dạng gói trùng lặp trong Debian 7 và Ubuntu 12.04 bị hỏng do thay đổi trong thư viện SSH phụ trợ.
Kiểm tra kỹ xem trùng lặp được cài đặt bằng cách chạy:
duplicity -v
Nó sẽ trả về đầu ra sau (phiên bản có thể khác):
duplicity 0.6.18
Thiết lập xác thực không cần khóa cho SSH
Bước tiếp theo là thiết lập xác thực dựa trên chứng chỉ cho SSH giữa máy chủ dự phòng và máy chủ nguồn. Điều này sẽ cho phép máy chủ nguồn SSH vào máy chủ dự phòng mà không cần nhập cụm mật khẩu. Vultr có một bài viết tuyệt vời giải thích cách thực hiện việc này: Làm cách nào để tạo Khóa SSH .
Sao lưu
Chạy bản sao lưu (đầy đủ) đầu tiên
Hãy chạy một bản sao lưu đầy đủ! Điều này sẽ gửi một bản sao đầy đủ của dữ liệu từ máy chủ nguồn đến đích.
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Bạn có thể thêm các thư mục bổ sung bằng cách bao gồm nhiều --include="[dir]"
câu lệnh.
Việc --no-encryption
xác định rằng dữ liệu sẽ không được mã hóa tại đích. Dữ liệu sẽ được mã hóa trong quá trình vận chuyển khi nó đi qua đường hầm SSH.
Các --exclude="**" /
tùy chọn là một thủ thuật để tất cả mọi thứ sao lưu đó là duy nhất trong danh sách bao gồm (và không có gì khác).
Chạy sao lưu gia tăng
Chạy một bản sao lưu gia tăng rất đơn giản - chỉ cần thay đổi full
cờ thành incremental
cờ.
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Tự động hóa
Viết kịch bản tự động
Phải chạy các lệnh này mỗi khi bạn cần sao lưu là một trở ngại - điều gì xảy ra nếu chúng ta có các tập lệnh để xử lý nó cho chúng ta?
Kịch bản sao lưu đầy đủ
Chạy lệnh.
nano /usr/local/bin/backup-full
Thêm nội dung sau.
#!/bin/bash
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Kịch bản sao lưu tăng dần
nano /usr/local/bin/backup-incremental
Thêm nội dung sau.
#!/bin/bash
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Làm cho tập lệnh thực thi
Để làm cho các tập lệnh thực thi, chạy lệnh sau.
chmod +x /usr/local/bin/backup-*
Bây giờ bạn có thể thực hiện sao lưu bằng cách chạy backup-full
và backup-incremental
từ trong shell. Tuyệt đấy!
Cài đặt cron
Hãy tạo bản sao lưu tự động! Bằng cách thiết lập cron để chạy các tập lệnh trên vào những thời điểm được chỉ định, chúng tôi có thể đảm bảo rằng các bản sao lưu được thực hiện theo định kỳ.
Chạy lệnh sau.
crontab -e
Thêm phần sau vào dưới cùng của tập tin.
10 01 * * 1,2,3,4,5,6 backup-incremental
10 01 * * 7 backup-full
Điều này sẽ chạy một bản sao lưu đầy đủ vào mỗi Chủ nhật lúc 1:10 AM và cũng sẽ chạy các bản sao lưu gia tăng mỗi ngày vào lúc 1:10 AM.
Sự phục hồi
Godzilla đã phá hủy Seattle và chúng tôi cần có thể lấy lại dữ liệu từ VPS dự phòng ở New York!
duplicity --no-encryption --file-to-restore / ssh://user@backupserver:22/destdir/
Nếu chúng tôi cần khôi phục dữ liệu từ 3 ngày trước:
duplicity --no-encryption -t 3D --file-to-restore / ssh://user@backupserver:22/destdir/
Các -t 3D
phương tiện tùy chọn khôi phục lại một bản sao lưu từ ba ngày trước. Các tùy chọn tương tự như -t 1M
(cho một tháng trước) hoặc -t 5H
(trong 5 giờ trước) cũng hoạt động.