Computer >> Máy Tính >  >> Điện thoại thông minh >> Linux

Cách tạo bản sao lưu Linux / Unix tự động

Hướng dẫn này sẽ hướng dẫn bạn từng bước trong quá trình tạo bản sao lưu tự động trong Linux (và hầu hết các Hệ điều hành * nix).

Một câu nói cũ là “Một đường khâu trong thời gian giúp tiết kiệm chín”. Trong thế giới máy tính, chúng tôi coi khâu đó là các bản sao lưu. Khi vận hành cơ sở hạ tầng CNTT sản xuất, chúng tôi bắt buộc phải đạt được thời gian hoạt động trên các máy chủ và ứng dụng của mình càng gần một trăm phần trăm càng tốt. Mặc dù có một số cách để làm cho một cơ sở hạ tầng CNTT vững chắc, nhưng không thể làm cho nó trở thành bằng chứng thất bại. Vì vậy, chúng tôi lập kế hoạch B.

Máy chủ được cấu tạo từ ba lớp rộng - phần cứng, hệ điều hành, ứng dụng và dữ liệu. Trong trường hợp lỗi phần cứng, việc thay thế máy mới khá đơn giản. Việc cài đặt hệ điều hành và các ứng dụng cũng tương đối đơn giản. Phần khó thay thế là dữ liệu và cấu hình mà các ứng dụng của bạn sử dụng. Trong trường hợp hỏng hóc, đây là bộ phận không thể thay thế được. Vì vậy, chúng tôi sao lưu dữ liệu đó một cách thường xuyên. Chúng tôi sao lưu nó theo cách để có thể dễ dàng truy xuất trong trường hợp khẩn cấp.

Tôi sẽ hướng dẫn bạn viết script để thực hiện các bản sao lưu tự động hàng ngày trên hệ thống Linux của bạn. Đối với bài tập này, tôi sẽ sử dụng một máy chủ chạy máy chủ web Apache, một máy chủ cơ sở dữ liệu MySQL và có một thư mục trên / home phân vùng chứa một số dữ liệu cần được sao lưu. Chúng tôi cũng sẽ sao lưu nhật ký truy cập Apache của ngày hôm trước trong một thư mục sao lưu riêng biệt. Đầu tiên, chúng ta cần tạo một thư mục chứa các bản sao lưu của chúng ta. Là một phần của bài tập, tôi đã tạo một thư mục có tên BACKUP trên / opt vách ngăn. Chúng tôi sẽ sắp xếp các bản sao lưu trong thư mục này để mỗi ngày bản sao lưu nằm trong một thư mục được tạo như thế này - / opt / BACKUP / YEAR / MONTH / DATE / . Vì vậy, vào ngày 11 tháng 8 năm 2008, các bản sao lưu sẽ chuyển sang dạng / opt / BACKUP / 2008/08/11 / . Hãy tạo các thư mục này. Chạy bộ lệnh sau dưới dạng root người dùng.

# mkdir -p / opt / backup / DATA / 2008
# cd / opt / backup / DATA / 2008
# mkdir 01 02 03 04 05 06 07 08 09 10 11 12
# cd / opt / backup / DATA /
# cp -r 2008 2009
# cd / opt / backup /
# cp -r NHẬT KÝ DỮ LIỆU

Xem ghi chú bên dưới trước khi thực hiện lệnh cuối cùng này.

# chown -R calvin.calvin / opt / backup

Bây giờ chúng tôi có hai bộ thư mục sao lưu - một cho dữ liệu và một cho các tệp nhật ký. Với các thư mục sao lưu đã tạo, bây giờ chúng ta đã sẵn sàng để bắt đầu viết script. Lưu ý: Tôi đang sử dụng người dùng calvin trong suốt bài viết này. Vui lòng thay thế calvin bằng tên người dùng của riêng bạn.


######################################### ################
# MÃ BẮT ĐẦU Ở ĐÂY
######################### ################################

#! / bin / bash

# DỰ PHÒNG DỮ LIỆU MÁY CHỦ V1.0

###########################
# CẤU HÌNH DỰ PHÒNG
############## ###########

# Cấu hình tháng, ngày và ngày
YEAR =`date +”% Y ”` # 2008
MONTH =`date +”% m ”` # 11
DAY =`date + ”% D” `# 14
YESTERDAY =` date –date =”hôm qua” +% Y-% m-% d` # 2008-11-13
YESTERDAY_DATE =`date –date =hôm qua + % d` # 13
YESTERDAY_MONTH =`ngày –date =hôm qua +% m` # 11
YESTERDAY_YEAR =` ngày –date =hôm qua +% Y` # 2008
TODAY =`ngày + % Y-% m-% d` # 2008-11-14
TODAY_DATE =`date +% d` # 14

# thư mục để sao lưu vào

DATA_BACKUP_PARENT_DIR =/ opt / backup / DATA / # <- Thay đổi điều này sao lưu dữ liệu của bạn
LOG_BACKUP_PARENT_DIR =/ opt / backup / LOG / # <- Thay đổi điều này dir sao lưu nhật ký của bạn

# Thư mục gốc tài liệu Apache
APACHE_DOCROOT =/ var / www / html /

# Cấu hình cơ sở dữ liệu MySQL
DB_IP =”localhost” # <- Thay đổi điều này thành IP của máy chủ cơ sở dữ liệu của bạn
DB_USER =”calvin” # <- Thay đổi điều này thành tên người dùng cơ sở dữ liệu của bạn
DB_PASS =”calvin_password” # <- Thay đổi mật khẩu này thành mật khẩu cơ sở dữ liệu của bạn
DB_NAME =”danh sách khách hàng” # <- Thay đổi tên này thành tên cơ sở dữ liệu của bạn

# Apache Log Dir
APACHE_LOG_DIR =”/ var / log / httpd /” # <- Thay đổi điều này thành dữ liệu đường dẫn của nhật ký của bạn

# Application Files ’Dir
APP_FILES =” / home / calvin / application_files / ” # <- Thay đổi tùy chọn này thành đường dẫn của thư mục dữ liệu

# Config Dir
CONFIG_DIR =”/ etc /” # <- Thay đổi điều này thành thư mục dữ liệu đường dẫn

# Địa chỉ báo cáo thư
EMAIL_ID =”[email protected] # <- Thay đổi địa chỉ này thành ID e-mail của bạn

##################################################### ###
# DỰ PHÒNG DỮ LIỆU
####################################### #################

# Tạo và đi vào thư mục sao lưu
cd $ DATA_BACKUP_PARENT_DIR / $ YEAR / $ MONTH
mkdir $ DAY
cd $ DAY

# Sao lưu cơ sở dữ liệu
mysqldump -h $ {DB_IP} -u $ {DB_USER} -p $ {DB_PASS} $ {DB_NAME}> $ {DB_NAME} .db
tar -zcvf $ {DB_NAME} .tar .gz $ {DB_NAME} .db
rm -f $ {DB_NAME} .db

# / etc backup
tar -zcf etc.tar.gz / etc

# Sao lưu ứng dụng
tar -zcf Apache_Doc_Root.tar.gz $ {APACHE_DOCROOT}
tar -zcf App_Files.tar.gz $ {APP_FILES}

##################################################### ###
# DỰ PHÒNG ĐĂNG NHẬP
####################################### #################

# Tạo và đi vào thư mục sao lưu
cd $ LOG_BACKUP_PARENT_DIR / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH
mkdir $ YESTERDAY_DATE
cd $ YESTERDAY_DATE

# Sao lưu nhật ký HTTPD
cho tôi trong $ {APACHE_LOG_DIR} / access_log. $ {YESTERDAY} *; làm cp $ i .; xong
cho tôi trong access_log. $ {YESTERDAY} *; làm gzip $ i; xong

##################################################### ###
# Gửi thông báo qua thư
#################################### ####################

# Thư thông báo
du -shc $ DATA_BACKUP_PARENT_DIR / $ YEAR / $ MONTH / $ DAY / * | mail -s “Sao lưu cho $ {HOSTNAME} ::Đã xong DATA :)” $ {EMAIL_ID}
du -shc $ LOG_BACKUP_PARENT_DIR / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH / $ YESTERDAY_DATE / * | mail -s “Sao lưu cho $ {HOSTNAME} ::LOG đã xong :)” $ {EMAIL_ID}

##################################################### ###
# MÃ KẾT THÚC TẠI ĐÂY
##################################### ###################

Lưu tập lệnh này trong một thư mục như /home/calvin/scripts/backup.sh. Cấp quyền thực thi cho tệp:

# chmod + x /home/calvin/scripts/backup.sh

Bây giờ bạn đã tốt để đi. Chạy biểu mẫu tập lệnh dòng lệnh của bạn:

# /home/calvin/scripts/backup.sh

Bạn cũng có thể tùy chọn thêm tập lệnh này như một công việc cron để nó sẽ được thực thi hàng ngày vào thời điểm bạn chọn. Nếu bạn muốn chạy tập lệnh này lúc 4 giờ sáng hàng ngày, hãy làm như sau:

# crontab -e

Tạo một dòng mới trong tệp mở ra và thêm dòng sau:

0 4 * * * /home/calvin/scripts/backup.sh> / dev / null

Của bạn đây. Máy chủ của bạn bây giờ sẽ sao lưu dữ liệu, cơ sở dữ liệu, tệp cấu hình, tệp ứng dụng và tệp nhật ký của bạn vào / opt / backup hàng ngày lúc 4 giờ sáng - sao lưu Linux hoàn toàn tự động! Một bước tuyệt vời tiếp theo là mã hóa chúng :)