Làm cách nào để sao lưu toàn bộ Máy chủ Centos?


24

Tôi đã chuyển đổi một vài tuần trước từ một máy chủ chuyên dụng sang VPS. Bây giờ mọi thứ đang hoạt động tốt trên VPS, tôi muốn tắt máy chủ chuyên dụng và đóng tài khoản của tôi với công ty lưu trữ.

Để an tâm và để an toàn hơn, tôi muốn thực hiện sao lưu toàn bộ máy chủ trước khi dừng nó.

Điều tốt nhất sẽ là một bản sao lưu mà tôi có thể duyệt nếu tôi thấy rằng tôi cần một cái gì đó trong bản sao lưu.

Điều gì sẽ là giải pháp tốt nhất từ ​​dòng lệnh?

Cập nhật:

Trung bình: Mạng

Câu trả lời:


28

Công cụ tốt nhất để sử dụng cho việc này có lẽ là dump, đây là một công cụ linux tiêu chuẩn và sẽ cung cấp cho bạn toàn bộ hệ thống tập tin. Tôi sẽ làm một cái gì đó như thế này:

/sbin/dump -0uan -f - / | gzip -2 | ssh -c blowfish user@backupserver.example.com dd of=/backup/server-full-backup-`date '+%d-%B-%Y'`.dump.gz

Điều này sẽ thực hiện kết xuất hệ thống tệp của / (đảm bảo bạn không cần kết xuất bất kỳ mount nào khác!), Nén nó bằng gzip và ssh nó vào một máy chủ từ xa (backupserver.example.com), lưu trữ trong / backup / . Nếu sau này bạn cần duyệt bản sao lưu, bạn sử dụng khôi phục:

restore -i

Một tùy chọn khác, nếu bạn không có quyền truy cập vào bãi chứa là sử dụng tar và làm một cái gì đó như

tar -zcvpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=tmp .

Nhưng tar cũng không xử lý các thay đổi trong hệ thống tập tin.


Lệnh dump này cũng đảm nhiệm các chương trình đã cài đặt đúng không? như nginx, v.v.
Thale

Dump là một bản sao theo nghĩa đen của hệ thống tập tin, với mọi thứ trong đó. Miễn là bạn không có nhiều hơn một (kiểm tra bằng cách chạy mount) đó là tất cả những gì bạn cần.
Bill Weiss

Tôi hiểu điều này-bash: /sbin/dump: No such file or directory
Lucas Bustamante

@LucasB Bạn có thể cần phải cài đặt dump. Trên Ubuntu, bạn làm một cái gì đó nhưsudo apt-get install dump
pehrs 8/11/2016

@pehrs làm thế nào để bạn khôi phục bằng cách sử dụng .gztập tin? Bạn có thể vui lòng thêm nó trong câu trả lời của bạn. Nó thực sự có ích.
Chai đỏ

10

Nếu bạn muốn sao lưu từ Linux sang Linux, tôi sẽ không sử dụng kết xuất, vì nó bất tiện khi bạn cần truy cập vào một cái gì đó bên trong tệp sao lưu. Chỉ cần sử dụng rsyncqua SSH để thực hiện sao lưu toàn bộ hệ thống sẽ ổn trong hầu hết các trường hợp:

rsync -aAXv --delete-after --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / user@server:backup-folder

Điều này sẽ giữ mọi thứ quan trọng cho phép bạn duyệt bản sao lưu mà không cần các bước bổ sung.

Bạn có thể muốn thêm --deletetùy chọn rsync nếu bạn đang chạy này nhiều lần vào cùng một thư mục sao lưu. Trong trường hợp này, đảm bảo rằng đường dẫn nguồn không kết thúc /*hoặc tùy chọn này sẽ chỉ có hiệu lực đối với các tệp bên trong thư mục con của thư mục nguồn, nhưng nó sẽ không có hiệu lực đối với các tệp nằm trực tiếp trong thư mục nguồn.


3

Phương tiện nào bạn sẽ lưu trữ bản sao lưu trên? Nếu bạn đang sao lưu qua mạng, tôi sẽ sshfs / nfs gắn kết đích của mình trên máy chủ nguồn và chạy một cái gì đó như:

tar cvjf /<remote_mnt>/<point>/source-030810-full.tar.bz2 /* --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/<remote_mnt>

Lưu ý rằng chưa được thử nghiệm, chỉ là suy nghĩ chung của tôi bạn có thể muốn loại trừ nhiều hơn hoặc ít hơn thế.


3

Tôi sử dụng lệnh được mô tả ở trên từ pehrs, nhưng được sửa đổi để sử dụng ftp. Mẫu Crontab:

30 3 1 * * sudo /sbin/dump -0uan -f server-full-backup-root-`date '+%d-%B-%Y'`.dump / && gzip -1 /<path_to_backup_file>/server-full-backup-root-`date '+%d-%B-%Y'`.dump
50 * * * * lftp -f upload.x

upload.x chứa thông tin và quy tắc ftp để tải lên:

open -u user,password -p 21 192.168.1.1
mirror -c -e -R /<path_to_backup_folder> /<path_to_remote_folder_without_trailing_slash>
exit

Lưu ý 1: lftp có thể gây ra việc sử dụng CPU cao khi không thể truy cập đích cố gắng kết nối lại. Vì nhiều máy chủ lưu trữ VPS có thể được đặt lại trong những trường hợp như vậy, tôi khuyên bạn nên theo dõi tải CPU để tiêu diệt quá trình lftp ngăn chặn máy chủ của bạn tắt máy chủ. Một ví dụ cho tải trung bình> 1,33 cho các quá trình lftp (và dropbox). Thật không may, tôi không nhớ nguồn mã ban đầu, nhờ ai đó:

Crontab */5 * * * * /home/cms/cron/loadmon.sh

#!/bin/bash
FROM_EMAIL_ADDRESS=cms
  trigger=1.33
  load=`cat /proc/loadavg | awk '{print $1}'`
  response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'`
if [[ $response = "greater" ]]
then
  killall dropbox lftp
  nice -n 19 sh /cms/.dropbox-dist/dropboxd
  sar -q | mailx -s "High load on server - [ $load ]" r***s@gmail.com
fi

Lưu ý 2: tiện ích kết xuất có thể không hoạt động trên VPS OpenVZ hoặc một số máy chủ ảo khác.


2

bạn đã nghe nói về Bacula chưa?

Bacula là một bộ Mã nguồn mở, sẵn sàng cho doanh nghiệp, các chương trình máy tính cho phép bạn (hoặc quản trị viên hệ thống) quản lý sao lưu, phục hồi và xác minh dữ liệu máy tính trên một mạng các loại máy tính khác nhau. Bacula tương đối dễ sử dụng và hiệu quả, đồng thời cung cấp nhiều tính năng quản lý lưu trữ tiên tiến giúp dễ dàng tìm và khôi phục các tệp bị mất hoặc bị hỏng. Về mặt kỹ thuật, đây là một chương trình sao lưu dựa trên mạng, sẵn sàng cho doanh nghiệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.