Backup và Restore Linux Centos Ubuntu Full OS

Đây là cách để backup 1 Server production và Restore nó về lại như cũ

BACKUP OS

Để chạy Backup, bạn trỏ về root directory. Rồi thực thi lệnh như sau.

tar cvpjf /mnt/linux.tar.bz2 --exclude=/dev/* --exclude=/sys/* --exclude=/proc/* --exclude=/mnt/* /

Giải thích:

Mình sẽ nén tất cả các directory ở root tới file /mnt/linux.tar.bz2. Tuy nhiên sẽ loại trừ tất cả các file trong các directory /dev/sys/proc vì những directory này sẽ được tự động bổ sung bới kernel.

Sau khi hoàn thành thì bạn sẽ có file backup cả OS.

RESTORE OS

Để restore bạn cần phải có 1 USB boot để vào environment linux, ghi nhớ chút là nếu bạn restore bản 64 thì phải dùng bản boot cũng 64bit.

Ở đây mình dùng Debian cho bạn dể hình dung tí.

Khi boot vào được terminal. Trước tiên bạn phải phân vùng lại ổ cứng (trường hợp ổ cứng là mới hoàn toàn).

Ở đây mình chỉ dùng 2 phân vùng.

/dev/sda1 cho root directory.
/dev/sda2 cho swap.

Kế tiếp bạn tạo directory mới tên /mnt/system

Sau đó mount /dev/sda1 tới system

mount /dev/sda1 /mnt/system

Kế tiếp, bạn copy file linux.tar.bz2 tới thư mục /mnt và bắt đầu giải nén nó ra.

tar xvpjf /mnt/linux.tar.bz2 -C /mnt/system

Sau khi hoàn thành phần giải nén, bạn sẽ phải truy cập vào OS chính. Câu lệnh:

mount -t proc none /mnt/system/procmount --rbind /dev /mnt/system/devmount --rbind /sys /mnt/system/syschroot /mnt/system /bin/bash

Sau khi thực hiện hết thì bạn đã vào được OS cũ của mình, phần kế tiếp là cấu hình fstab.

Mở file /etc/fstab và sửa nó tương tự như sau

/dev/sda1 /     ext4  defaults    0 1/dev/sda2 swap  none  sw          0 0

Bạn có thể thay đổi bằng UUID hoặc LABEL.

Sau khi xong phần fstab, kế tiếp là cài đặt Boot. Câu lệnh:

grub-install /dev/sda

Nếu bạn ko gặp bất cứ error nào thì bạn đã hoàn thành phần restore.

Chỉ Backup dữ liệu file, thư mục

– Xác định file, thư mục cần backup

Ở hướng dẫn này, dữ liệu của tôi gồm các thư mục nằm trong /home

– Tạo script với ngôn ngữ bash shell để backup dữ liệu trong thư mục /home

​Tạo file /usr/src/backup-web.sh với nội dung dưới

#!/bin/bash

DATE=`date +"%d-%m-%y"`
mkdir -p $BACKUP

for i in `ls /home`
do
      /usr/bin/zip -r -9 $BACKUP/$i.zip /home/$i
      sleep 1
done

##Giữ 7 bản backup trên server, tùy vào dung lượng server của bạn mà điều chỉnh số ngày cho phù hợp

find /backup -name 'web*' -type d -mtime +6 -exec rm -rf {} \;

– Chạy lệnh dưới để phân quyền thực thi cho file vừa tạo:

chmod +x /usr/src/backup-mysql.sh

Chỉ Backup dữ liệu database MySQL

– Xác định tài khoản có toàn quyền trong các database MySQL để backup

​Trường hợp này tôi có tài khoản Mysql là root với mật khẩu abcd@123

– Tạo script với ngôn ngữ bash shell để backup các database trong Mysql

​Tạo file /usr/src/backup-mysql.sh với nội dung dưới

#!/bin/bash

DATE=`date +"%d-%m-%y"`
BACKUP="/backup/mysql-$DATE"
mkdir -p $BACKUP

for i in `mysql -u root –pabcd@123 -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
do
        mysqldump -u root –pabcd@123 $i | gzip -9 > $BACKUP/$i.sql.gz
        sleep 1
done

##Giữ 7 bản backup trên server, tùy vào dung lượng server của bạn mà điều chỉnh số ngày cho phù hợp

find /backup -name 'mysql*' -type d -mtime +6 -exec rm -rf {} \;

– Chạy lệnh dưới để phân quyền thực thi cho file vừa tạo

chmod +x /usr/src/backup-mysql.sh

Lập lịch cron job chạy backup cho server

– Tại VPS/Server Linux chạy lệnh crond -e để vào chế độ lập lịch của hệ thống.

– Cấu hình chạy backup 1h00 hàng ngày với dữ liệu web và 3h00 hằng ngày với dữ liệu database

 

cron backup centos

Chúc bạn thực hiện thành công!

Bình luận
Đông Duy
Đông Duy
Thích khoa học tự nhiên và máy tính. Thích nghiên cứu những gì mới, nhưng mỗi ngày đều có thêm một thứ để biết nên làm cái blog này để viết được gì thì viết, chia sẻ cho mọi người chút thông tin hữu ích.

Bài viết liên quan

Bài viết xem nhiều

Bài viết mới