Đâ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/proc
mount --rbind /dev /mnt/system/dev
mount --rbind /sys /mnt/system/sys
chroot /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
Chúc bạn thực hiện thành công!