Chỉ thêm bản sao lưu với borg vào VPS khác hoặc máy chủ chuyên dụng

theanh

Administrator
Nhân viên
Hướng dẫn này sẽ chỉ cách sao lưu dữ liệu trên máy chủ, được gọi là máy chủ chính, sang một máy chủ khác, ở đây được gọi là máy chủ sao lưu, bằng chương trình sao lưu phần mềm miễn phí Borg. Máy chủ sao lưu sẽ được cấu hình theo cách mà máy chủ chính khi sử dụng bình thường chỉ có thể thêm dữ liệu mới, chứ không thể xóa hoặc thay đổi các bản sao lưu cũ. Tính năng chỉ thêm này, kết hợp với thực tế là các bản sao lưu được lưu trữ trên một máy chủ riêng biệt ở một vị trí riêng biệt, giúp các bản sao lưu được bảo vệ khỏi mất dữ liệu do các tai nạn tự nhiên hoặc tin tặc tấn công vào máy chủ chính.

Điều kiện tiên quyết để làm theo hướng dẫn này là sử dụng Debian Stretch (9) hoặc Debian Buster (10) và có hai máy chủ khả dụng, một máy chủ chính dùng để sao lưu và một máy chủ sao lưu khác nơi lưu trữ các kho lưu trữ sao lưu. Hai máy chủ này phải ở những vị trí riêng biệt để được bảo vệ tối ưu.

Hướng dẫn này sẽ bắt đầu bằng cách cấu hình trên máy chủ sao lưu ở phần đầu tiên. Ở phần thứ hai, chúng ta sẽ cấu hình máy chủ chính, sau đó thực hiện sao lưu, khôi phục thử nghiệm và chỉ cách cắt tỉa thủ công các kho lưu trữ sao lưu cũ.


1 Cấu hình máy chủ sao lưu​

1.1 Cài đặt borg và tạo người dùng borgbackup mới​

Trên máy chủ sao lưu (máy chủ nơi lưu trữ các bản sao lưu), hãy cài đặt Borg trong một thiết bị đầu cuối gốc bằng lệnh này:
Mã:
apt install borgbackup
Sau đó, chọn mật khẩu cho người dùng borg mà chúng ta sẽ sớm tạo. (Bắt buộc phải có mật khẩu cho mỗi người dùng, tuy nhiên, mật khẩu này hầu như không bao giờ được sử dụng vì chúng ta thường kết nối với máy chủ sao lưu bằng khóa SSH.) Nếu bạn muốn tạo mật khẩu ngẫu nhiên gồm 64 ký tự, hãy sử dụng lệnh này:
Mã:
< /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-64};echo;
Sao chép mật khẩu cho người dùng borg được hiển thị vào bảng tạm và lưu nó ở một vị trí an toàn nào đó ngoài máy chủ.

Bây giờ, chúng ta sẽ tạo người dùng borgbackup:
Mã:
adduser borgbackup
Khi bạn nhận được câu hỏi về mật khẩu, hãy dán mật khẩu bạn đã sao chép trước đó, nhấn Enter rồi dán lại mật khẩu theo sau là Enter. Không cần điền thêm bất kỳ thông tin nào khác, chỉ cần nhấn Enter để trả lời các câu hỏi sau.

1.2 Tạo khóa SSH cho người dùng borgbackup​

Bây giờ chúng ta cần trở thành người dùng mới với su:
Mã:
su borgbackup
cd
Sau đó, chúng ta tạo một cặp khóa SSH mới cho người dùng:
Mã:
ssh-keygen -t ed25519
Sau khi nhấn Enter, bạn sẽ nhận được một loạt các câu hỏi. Để trống các câu trả lời, chỉ cần tiếp tục nhấn Enter nhiều lần cho đến khi lệnh hoàn tất. Không đặt bất kỳ mật khẩu nào cho khóa, hãy nhấn Enter cho câu hỏi đó.

1.3 Tạo thư mục sao lưu​

Bây giờ, đã đến lúc tạo thư mục nơi các bản sao lưu sẽ được lưu trữ, theo thuật ngữ của borg được định nghĩa là kho lưu trữ borg. Chúng ta sẽ chỉ gọi thư mục là borgbackup, nhưng bạn có thể chọn đặt tên theo tên máy chủ của máy chủ chính.
Mã:
cd
mkdir borgbackup
chmod go-rwx borgbackup
chmod u+rwx borgbackup

2 Thiết lập máy chủ chính và cách kết nối với máy chủ sao lưu​

2.1 Cài đặt Borg​

Bây giờ chúng ta chuyển từ làm việc trên máy chủ sao lưu sang làm việc trên máy chủ chính.

Trên máy chủ chính (máy chủ bạn muốn sao lưu), hãy cài đặt Borg trong thiết bị đầu cuối gốc bằng lệnh này:
Mã:
apt install borgbackup
Sau đó, chúng ta sẽ cần địa chỉ IP bên ngoài của máy chủ chính (máy chủ chúng ta đang ở). Vui lòng sao chép địa chỉ IP này để bạn có thể sử dụng ngay. Nếu bạn không nhớ địa chỉ IP bên ngoài của máy chủ chính, hãy chạy lệnh này để hiển thị địa chỉ đó:
Mã:
wget -qO- http://ipecho.net/plain | xargs echo

2.2 Cho phép máy chủ chính truy cập máy chủ sao lưu​

Các lệnh bạn chạy trên máy chủ chính

Bây giờ chúng ta sẽ chuẩn bị xác thực khóa SSH để có thể kết nối từ máy chủ chính đến máy chủ sao lưu. Trước tiên, hãy sử dụng lệnh này để hiển thị khóa SSH công khai của người dùng gốc trên máy chủ chính:
Mã:
cat ~/.ssh/id_*.pub
Nếu bạn có khóa công khai SSH cho root, bây giờ bạn sẽ thấy khóa này được hiển thị. Sao chép khóa vào bảng tạm của bạn, bạn sẽ cần dán khóa này sau vào một tệp trên máy chủ sao lưu.

Nếu bạn không thấy khóa được hiển thị, bạn cần tạo cặp khóa. Ví dụ, hãy chạy lệnh này trong trường hợp đó: ssh-keygen -t ed25519 theo sau là nhấn Enter nhiều lần.

Bây giờ, chúng ta cần yêu cầu máy chủ sao lưu cho phép truy cập từ máy chủ chính (nơi chúng ta đang ở hiện tại) bằng khóa SSH công khai. Để thực hiện việc này, hãy nhập lệnh này, nhưng trước tiên hãy thay thếBACKUPHOSTNAME bằng tên máy chủ của máy chủ sao lưu của bạn:
Mã:
ssh-copy-id -i ~/.ssh/id_*.pub borgbackup@[B]BACKUPHOSTNAME[/b]
Kết nối đến máy chủ sao lưu

Bây giờ bạn sẽ cần nhập mật khẩu cho người dùng borgbackup mà bạn đã tạo ở bước 1.1. Sau khi hoàn tất, bạn có thể truy cập trực tiếp vào máy chủ sao lưu với tư cách là người dùng borgbackup mà không cần bất kỳ mật khẩu nào. Bây giờ, hãy kiểm tra xem điều này có khả thi không bằng cách nhập lệnh này, thay thế BACKUPHOSTNAME bằng tên máy chủ của máy chủ sao lưu của bạn:
Mã:
ssh borgbackup@[B]BACKUPHOSTNAME[/b]
Các lệnh bạn chạy tại máy chủ sao lưu

Bây giờ chúng ta sẽ thắt chặt bảo mật hơn nữa bằng cách hạn chế quyền truy cập chỉ từ địa chỉ IP của máy chủ chính bằng khóa này.

Ở lại máy chủ sao lưu và chạy lệnh này:
Mã:
nano ~/.ssh/authorized_keys
Bây giờ, bạn sẽ thấy một dòng dài bắt đầu bằng ssh. Xác minh rằng con trỏ nằm ở đầu tệp. Thêm dữ liệu sau vào cùng một dòng, trước khóa ssh, nhưng trước tiên hãy thay SERVERIPADDRESS bằng địa chỉ IP của máy chủ của bạn (mà bạn đã nghiên cứu ở đầu phần này):
Mã:
from="SERVERIPADDRESS",command="borg serve --append-only --restrict-to-path /home/borgbackup/borgbackup/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc
Đảm bảo rằng có một ký tự khoảng trắng giữa phần bạn đã thêm và phần đã tồn tại bắt đầu bằng ssh theo sau. Sau đó, lưu tệp bằng Ctrl+O và thoát bằng Ctrl+X. Bây giờ chúng tôi đã giới hạn quyền truy cập vào máy chủ sao lưu theo hai cách. Đầu tiên, chỉ có địa chỉ IP của máy chủ chính được phép truy cập. Thứ hai, thông qua tùy chọn --append-only, chỉ được phép thêm dữ liệu vào kho lưu trữ borg, nhưng không được phép xóa và thay đổi.

Ngắt kết nối khỏi máy chủ sao lưu và quay lại máy chủ chính

Chạy lệnh này để thoát khỏi máy chủ sao lưu và quay lại máy chủ chính:
Mã:
exit

2.3 Chọn mật khẩu kho lưu trữ borg​

Kho lưu trữ borg là vị trí lưu trữ các bản sao lưu. Kho lưu trữ này được bảo vệ bằng mật khẩu kho lưu trữ borg mà bạn biết là cần phải chọn. Mật khẩu này là cần thiết để thực hiện các bản sao lưu mới và truy cập vào các bản sao lưu cũ. Bạn có thể tự nghĩ ra mật khẩu (chọn tối thiểu 20 ký tự để bảo mật tối ưu) hoặc tạo ngẫu nhiên mật khẩu dài 64 ký tự bằng lệnh này:
Mã:
< /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-64};echo;
Sao chép mật khẩu kho lưu trữ borg vào bảng tạm của bạn bằng cách đánh dấu và nhấn Ctrl+C. Điều cần thiết là phải lưu mật khẩu kho lưu trữ borg ở một nơi an toàn vì nếu không có mật khẩu này, bạn không thể truy cập vào bản sao lưu của mình! Vì vậy, hãy lưu một bản sao mật khẩu borg ngay bây giờ ở một nơi nào đó khác ngoài máy chủ của bạn, ví dụ như trong trình quản lý mật khẩu (như KeePass) trên máy tính của riêng bạn.

2.4 Tạo kho lưu trữ borg​

Theo thuật ngữ của Borg, vị trí lưu trữ các bản sao lưu được gọi là borg kho lưu trữ. Mật khẩu bây giờ sẽ được đặt thành một biến môi trường để chuẩn bị tạo kho lưu trữ này. Thay thế MẬT KHẨU bằng mật khẩu thực của bạn và thực thi lệnh bên dưới với tư cách là người dùng gốc của máy chủ chính của bạn:
Mã:
export BORG_PASSPHRASE='[B]MẬT KHẨU[/b]'
Tạo kho lưu trữ borg theo cách này - nhưng trước tiên hãy thay thế BACKUPHOSTNAME bằng tên máy chủ của máy chủ sao lưu của bạn:
Mã:
borg init -e repokey-blake2 borgbackup@[B]BACKUPHOSTNAME[/b]:/home/borgbackup/borgbackup/
Bây giờ mọi thứ đã được chuẩn bị để sử dụng borg để sao lưu, đây sẽ là chủ đề của phần sau.

3 Sao lưu từ máy chủ chính​

3.1 Chạy sao lưu thủ công​

Trong ví dụ sau, toàn bộ hệ thống của máy chủ chính máy chủ sẽ được sao lưu, ngoại trừ một số thư mục không liên quan đến việc sao lưu.

Vui lòng đảm bảo rằng bạn đã đăng nhập với tư cách là root trên máy chủ chính trước khi tiếp tục. Đầu tiên, chúng ta sẽ thiết lập biến môi trường cho mật khẩu kho lưu trữ borg thông qua lệnh này (thay MẬT KHẨUbằng mật khẩu kho lưu trữ borg thực tế của bạn:
Mã:
export BORG_PASSPHRASE='[B]MẬT KHẨU[/b]'
Sau đó, chúng ta sẽ chạy lệnh sau để thực hiện sao lưu toàn bộ hệ thống. Vui lòng điều chỉnh các loại trừ thư mục, bắt đầu bằng --exclude, theo nhu cầu của bạn. Ví dụ: bạn có thể muốn thêm loại trừ thư mục /mnt bằng cách thêm --exclude=mnt Xin lưu ý rằng bạn không nên nhập dấu gạch chéo đầu tiên trong mẫu loại trừ, ví dụ: bạn viết mnt thay vì /mnt. Bạn cũng cần thay đổi BACKUPHOSTNAMEthành tên máy chủ thực tế của máy chủ sao lưu của bạn. Trước tiên, chúng ta cần chạy lệnh cd / vì borg thường bắt đầu sao lưu từ thư mục mà nó được chạy.
Mã:
cd / && borg create --stats --progress --compress lz4 borgbackup@[B]BACKUPHOSTNAME[/b]:/home/borgbackup/borgbackup/::`hostname`-`date +%Y-%m-%d-%H-%M-%S` ./ --exclude=dev--exclude=mnt/borgbackup -exclude=proc --exclude=run--exclude=root/.cache/ --exclude=sys --exclude=tmp && cd
Lần đầu tiên chạy bản sao lưu sẽ mất một thời gian (có thể mất đến vài giờ nếu bạn có lượng dữ liệu lớn để sao lưu). Bạn sẽ thấy một dòng trạng thái cập nhật nhanh chóng chính xác tệp mà borg đang xử lý trong bản sao lưu. Từ lần sao lưu thứ hai trở đi, quá trình sao lưu sẽ nhanh hơn nhiều vì chỉ có những thay đổi kể từ lần sao lưu cuối cùng mới được truyền đi.

3.2 Lên lịch sao lưu bằng cron​

Tất nhiên, tốt nhất là chạy sao lưu tự động theo một khoảng thời gian đều đặn, thay vì phải nhớ chạy sao lưu thủ công. Để thực hiện điều này, trước tiên chúng ta tạo một tập lệnh shell chạy tác vụ sao lưu, sau đó chỉnh sửa bằng trình chỉnh sửa nano với tư cách là người dùng gốc trên máy chủ chính:
Mã:
touch /usr/local/bin/borgbackup.sh
chmod go-rwx /usr/local/bin/borgbackup.sh
chmod u+rwx /usr/local/bin/borgbackup.sh
nano /usr/local/bin/borgbackup.sh
Chèn các dòng sau vào tập lệnh shell mới:
Mã:
#!/bin/sh
export BORG_PASSPHRASE='[I][B]MẬT KHẨU[/b][/I]'
cd / && borg create --stats --progress --compress lz4 borgbackup@[I][B]BACKUPHOSTNAME[/b][/I]:/home/borgbackup/borgbackup/::`hostname`-`date +%Y-%m-%d-%H-%M-%S` ./ --exclude=dev--exclude=proc --exclude=run--exclude=root/.cache/ --exclude=mnt/borgmount --exclude=sys --exclude=tmp && cd
Bạn cần thay thế MẬT KHẨU bằng mật khẩu kho lưu trữ borg của bạn, thay thế BACKUPHOSTNAMEbằng tên máy chủ của máy chủ sao lưu và cuối cùng điều chỉnh các mẫu loại trừ theo nhu cầu của bạn - bạn có thể muốn thêm --exclude=mnt để loại trừ thư mục /mnt khỏi bản sao lưu. Lưu tệp trong trình soạn thảo nano bằng cách nhấn Ctrl+O, sau đó thoát bằng Ctrl+X.

Tiếp theo, hãy kiểm tra tập lệnh bằng cách chạy nó từ thiết bị đầu cuối:
Mã:
/usr/local/bin/borgbackup.sh
Để lên lịch sao lưu vào lúc 02:00 mỗi đêm, hãy thêm tập lệnh shell sao lưu mà chúng ta vừa tạo vào /etc/crontab :
Mã:
nano /etc/crontab
Sau đó thêm một dòng mới vào crontab với tác vụ sao lưu:
Mã:
# Sao lưu qua Borg đến máy chủ sao lưu 
00 02 * * * root /usr/local/bin/borgbackup.sh

4 Khôi phục tệp (khi đã đăng nhập tại máy chủ chính)​

4.1 Hiển thị danh sách của các bản sao lưu đã thực hiện​

Bạn không có hệ thống sao lưu hoạt động cho đến khi bạn xác minh rằng bạn có thể khôi phục dữ liệu từ các bản sao lưu của mình. Do đó, bước tiếp theo của chúng ta là kiểm tra bản sao lưu mà chúng ta đã thực hiện trước đó. Điều này sẽ được thực hiện từ thiết bị đầu cuối gốc tại máy chủ chính. Chúng tôi sẽ thực hiện điều này bằng cách gắn kho lưu trữ sao lưu dưới dạng hệ thống tệp bổ sung, nhưng trước tiên, chúng tôi sẽ kiểm tra danh sách các bản sao lưu được tạo thông qua việc tạo tập lệnh shell với tư cách là người dùng root trên máy chủ chính của bạn:
Mã:
touch /usr/local/bin/borglist.sh
chmod go-rwx /usr/local/bin/borglist.sh
chmod u+rwx /usr/local/bin/borglist.sh
nano /usr/local/bin/borglist.sh
Chèn nội dung sau vào tập lệnh shell mới, thay thế MẬT KHẨU bằng mật khẩu kho lưu trữ borg của bạn và TÊN MÁY CHỦ SAO LƯU bằng tên máy chủ của máy chủ sao lưu của bạn:
Mã:
#!/bin/sh
export BORG_PASSPHRASE='[I][B]MẬT KHẨU[/b][/I]'
borg list -v borgbackup@[I][B]BACKUPHOSTNAME[/b][/I]:/home/borgbackup/borgbackup/
Lưu tệp bằng Ctrl+O theo sau là Ctrl+X. Sau đó chạy tập lệnh shell theo cách này:
Mã:
/usr/local/bin/borglist.sh
Bây giờ bạn sẽ thấy danh sách các bản sao lưu đã được thực hiện. Nếu bản sao lưu đầu tiên của bạn đã được thực hiện, do đó bạn sẽ thấy một mục trong danh sách. Bây giờ hãy đánh dấu và sao chép tên kho lưu trữ vào bảng tạm. Bạn sẽ tìm thấy tên kho lưu trữ trong cột đầu tiên, tên này bao gồm tên máy chủ của máy chủ chính của bạn theo sau là ngày và giờ, theo định dạng này: mainhostname-2019-01-31-12-59-59 .

3.4 Xác minh/khôi phục dữ liệu​

Bây giờ chúng ta sẽ gắn toàn bộ kho lưu trữ borg dưới dạng gắn hệ thống tệp FUSE. Điều này có nghĩa là kho lưu trữ borg - bao gồm tất cả các tệp đã được sao lưu - trở thành một hệ thống tệp, mà chúng ta có thể duyệt và kiểm tra thông qua các lệnh thông thường như ls và cd.

Để có thể dễ dàng gắn kho lưu trữ borg, chúng ta sẽ tạo một phím tắt của các lệnh dưới dạng tập lệnh shell. Tạo và chỉnh sửa tập lệnh shell theo cách này:
Mã:
touch /usr/local/bin/borgmount.sh
chmod go-rwx /usr/local/bin/borgmount.sh
chmod u+rwx /usr/local/bin/borgmount.sh
nano /usr/local/bin/borgmount.sh
Sau đó chèn các dòng bên dưới vào tập lệnh schell, nhưng trước tiên hãy thay đổi MẬT KHẨU bên dưới thành mật khẩu kho lưu trữ borg của bạn và thay đổi TÊN MÁY CHỦ SAO LƯU thành tên máy chủ của máy chủ sao lưu của bạn:
Mã:
#!/bin/sh
mkdir -p /mnt/borgbackup
export BORG_PASSPHRASE='[I][B]MẬT KHẨU[/b][/I]'
borg mount borgbackup@[I][B]BACKUPHOSTNAME[/b][/I]:/home/borgbackup/borgbackup/ /mnt/borgbackup
Lưu tệp bằng Ctrl+O theo sau là Ctrl+X. Sau đó chạy tập lệnh shell theo cách này:
Mã:
/usr/local/bin/borgmount.sh
Kho lưu trữ borg bây giờ sẽ được gắn kết tại /mnt/borgbackup - bạn có thể kiểm tra điều này bằng cách sử dụng cd và ls:
Mã:
cd /mnt/borgbackup
ls
Bây giờ bạn sẽ thấy một thư mục chứa bản sao lưu của mình. Vào thư mục đó bằng lệnh cd (thay thế DIRECTORYNAME bằng tên thư mục bạn thấy hiển thị là kết quả của lệnh ls bạn vừa nhập) rồi dùng ls để xem nội dung:
Mã:
cd DIRECTORYNAME
ls
Bây giờ bạn sẽ có thể xem kho lưu trữ cuối cùng (bản sao lưu cuối cùng được tạo). Bạn có thể so sánh với diff để xem tệp đã được sao lưu đúng chưa, ví dụ đối với /etc/fstab, bằng lệnh này:
Mã:
diff etc/fstab /etc/fstab
Nếu bạn không nhận được đầu ra nào từ diff, thì hai tệp giống hệt nhau và bản sao lưu đã hoạt động đối với tệp đó. Mặt khác, nếu bạn đã thay đổi tệp kể từ lần sao lưu cuối cùng, bạn sẽ thấy những dòng nào trong các tệp khác nhau.

Nếu muốn, bạn có thể khôi phục các tệp từ bản sao lưu, chỉ cần sử dụng lệnh cp để sao chép các tệp từ thư mục con của /mnt/borgbackup mà bạn đang ở trong thiết bị đầu cuối ngay bây giờ.

Cuối cùng, chúng ta sẽ tạo một tập lệnh để hủy gắn kết cầu chì borg.

Tạo và chỉnh sửa tập lệnh shell theo cách này:
Mã:
touch /usr/local/bin/borgumount.sh
chmod go-rwx /usr/local/bin/borgumount.sh
chmod u+rwx /usr/local/bin/borgumount.sh
nano /usr/local/bin/borgumount.sh
Sau đó chèn các dòng bên dưới vào schell script:
Mã:
#!/bin/sh
cd ~
umount /mnt/borgbackup
rmdir /mnt/borgbackup
Lưu tệp bằng Ctrl+O theo sau là Ctrl+X. Sau đó chạy tập lệnh shell theo cách này:
Mã:
/usr/local/bin/borgumount.sh
Borg fuse mount hiện đã được hủy gắn kết và bạn đã được đặt trong thư mục /root/ tại thiết bị đầu cuối.

4 Cắt bớt các bản sao lưu cũ (yêu cầu truy cập vào cả máy chủ sao lưu và máy chủ chính)​

Bây giờ chúng ta cần chuyển đổi qua lại giữa máy chủ sao lưu và máy chủ chính. Đầu tiên, chúng ta bắt đầu bằng các lệnh trên máy chủ sao lưu.

Sau một thời gian, kích thước của các bản sao lưu có thể tăng lên. Vì lý do bảo mật, máy chủ chính không được phép tự động xóa các bản sao lưu cũ. Tuy nhiên, chúng ta có thể tạm thời cho phép xóa các kho lưu trữ sao lưu cũ khi cần, để tiết kiệm dung lượng đĩa tại máy chủ sao lưu.

Quy trình xóa này được gọi là prune theo thuật ngữ borg. Quy trình prune bắt đầu tại máy chủ sao lưu, với việc cho phép truy cập đọc-ghi tạm thời. Sau đó, chúng ta kết nối với máy chủ chính để đưa ra lệnh prune. Cuối cùng, chúng ta truy cập lại máy chủ sao lưu để vô hiệu hóa quyền truy cập đọc-ghi để các bản sao lưu cũ được bảo vệ khỏi việc xóa hoặc sửa đổi một lần nữa.

4.1 Cho phép truy cập đọc+ghi tạm thời (thực hiện từ máy chủ sao lưu)​

Bây giờ chúng ta sẽ làm việc tại máy chủ sao lưu.

Do đó, hãy kết nối với máy chủ sao lưu và đăng nhập với tư cách là root. Để cho phép truy cập đọc + ghi, chúng ta cần thay đổi tệp /home/borgbackup/.ssh/authorized_keys tại máy chủ sao lưu. Phát hành các lệnh này để trở thành người dùng borgbackup, sao lưu tệp và sau đó chỉnh sửa tệp bằng nano:
Mã:
su borgbackup
cd
cp -a ~/.ssh/authorized_keys ~/.ssh/authorized_keys.bak
nano ~/.ssh/authorized_keys
Bây giờ, trong trình soạn thảo nano, bạn sẽ thấy một dòng dài bắt đầu bằng from=. Cắt dòng bằng cách nhấn Ctrl+K rồi nhấn Ctrl+U, và một lần nữa nhấn Ctrl+U để bây giờ bạn có hai dòng giống hệt nhau. Nhấn phím Lên trên bàn phím của bạn hai lần để đặt con trỏ ở hàng đầu tiên. Sau đó, nhập ký tự # để bình luận cho dòng đầu tiên. Tiếp theo, nhấn phím Xuống trên bàn phím của bạn để đến hàng thứ hai. Ở đây, bạn nên di chuyển sang phải bằng phím Right trên bàn phím cho đến khi bạn đứng ở đầu tiên - trong --append-only. Sau đó nhấn phím Del nhiều lần để xóa tùy chọn --append-only. Tệp sẽ trông gần giống thế này, lưu ý rằng chúng ta đã chú thích dòng đầu tiên và --append-only bị xóa khỏi dòng thứ hai:
Mã:
#from="SERVERIPADDRESS",command="borg serve --append-only --restrict-to-path /home/borgbackup/borgbackup/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh ... (dòng tiếp tục) ...
from="SERVERIPADDRESS",command="borg serve --restrict-to-path /home/borgbackup/borgbackup/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh ... (dòng tiếp tục) ..
Lưu tệp bằng Ctrl+O và thoát bằng Ctrl+X. Bây giờ chúng ta đã bật quyền truy cập đọc+ghi vào kho lưu trữ borg.

4.2 Cắt bớt các bản sao lưu cũ (thực hiện từ máy chủ chính)​

Bây giờ, hãy kết nối với máy chủ chính trong cửa sổ terminal mới với tư cách là người dùng root.

Bây giờ chúng ta sẽ tạo một tập lệnh tại máy chủ chính để cắt bớt (tức là xóa) các bản sao lưu cũ. Tạo và chỉnh sửa tập lệnh shell trên máy chủ chính theo cách này:
Mã:
touch /usr/local/bin/borgprune.sh
chmod go-rwx /usr/local/bin/borgprune.sh
chmod u+rwx /usr/local/bin/borgprune.sh
nano /usr/local/bin/borgprune.sh
Sau đó chèn các dòng bên dưới vào tập lệnh shell. Sau đó thay MẬT KHẨUbằng mật khẩu kho lưu trữ borg của bạn và TÊN MÁY CHỦ SAO LƯUbằng tên máy chủ của máy chủ sao lưu của bạn. Bạn cũng cần điều chỉnh số lượng bản sao lưu cũ mà bạn muốn giữ lại. Trong ví dụ này, chúng tôi giữ lại 7 bản sao lưu hàng ngày, 4 bản sao lưu hàng tuần và 12 bản sao lưu hàng tháng.
Mã:
#!/bin/sh
export BORG_PASSPHRASE='[I][B]MẬT KHẨU[/b][/I]'
borg prune --stats --progress borgbackup@[B]TÊN MÁY CHỦ SAO LƯU[/b]:/home/borgbackup/borgbackup/ --prefix `hostname`- --keep-daily=7 --keep-weekly=4 --keep-monthly=12
Nhấn Ctrl+O và Ctrl+X để lưu và thoát khỏi tệp. Sau đó, chạy tập lệnh prune mà bạn vừa tạo trên máy chủ chính:
Mã:
/usr/local/bin/borgprune.sh
Lệnh này sẽ mất một lúc (có thể lên đến vài giờ), nhưng bạn có thể thấy tiến trình thực hiện trong suốt quá trình, qua hai lần chạy để đạt đến 100%.

4.3 Không cho phép truy cập đọc+ghi (thực hiện từ máy chủ sao lưu)​

Bây giờ chúng ta quay lại làm việc tại máy chủ sao lưu.

Sau khi lệnh prune hoàn tất trên máy chủ chính, giờ bạn kết nối với máy chủ sao lưu với tư cách là người dùng borgbackup và chỉnh sửa lại tệp /home/borgbackup/.ssh/authorized_keys để không cho phép truy cập đọc+ghi.

Thực hiện như sau trên máy chủ sao lưu:
Mã:
su borgbackup
cd 
nano ~/.ssh/authorized_keys
Trong trình soạn thảo nano, hãy xóa ký tự # ở đầu hàng đầu tiên bằng cách nhấn phím Del trên bàn phím của bạn. Sau đó, nhấn phím Down và chèn ký tự # mới vào dòng thứ hai. Sau đó, tệp sẽ trông giống như thế này:
Mã:
from="SERVERIPADDRESS",command="borg serve --append-only --restrict-to-path /home/borgbackup/borgbackup/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh ... (dòng tiếp tục) ...
#from="SERVERIPADDRESS",command="borg serve --restrict-to-path /home/borgbackup/borgbackup/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh ... (dòng tiếp tục) ..
Lưu tệp bằng Ctrl+O và thoát bằng Ctrl+X. Chúng tôi hiện đã vô hiệu hóa quyền truy cập đọc+ghi vào kho lưu trữ borg.

Bây giờ các bản sao lưu có thể tiếp tục như bình thường, theo cách chỉ thêm vào và bạn được bảo vệ khỏi các nỗ lực xóa từ máy chủ chính nhắm vào các bản sao lưu được lưu trữ trên máy chủ sao lưu.

4.4 Nhận xét cuối cùng​

Bây giờ bạn đã tạo một hệ thống sao lưu ngoài trang web và chỉ thêm vào. Điều này có nghĩa là các bản sao lưu được bảo vệ theo hai cách. Thứ nhất, các bản sao lưu được bảo vệ theo nghĩa là tách biệt về mặt vật lý với máy chủ chính. Thứ hai và cuối cùng, các bản sao lưu đã được thực hiện được bảo vệ khỏi các nỗ lực thay đổi từ máy chủ chính (trừ khi bạn quyết định rõ ràng thay đổi chúng thông qua việc cắt tỉa thủ công).
 
Back
Bên trên