# install-snapshot-restore

Dưới đây là quy trình từng bước đầy đủ để tạo và khôi phục Rsync System Snapshot cho Ubuntu Server (máy vật lý, ext4). Quy trình này phù hợp cho backup định kỳ và phục hồi toàn hệ thống khi gặp sự cố.

## PHẦN 1 — TẠO SYSTEM SNAPSHOT

Tạo bản sao toàn bộ hệ thống đang chạy sang một ổ đĩa khác (khuyến nghị dùng ổ riêng, ví dụ `/dev/sdb1`).

### Bước 1️⃣ Chuẩn bị ổ backup

1. Kiểm tra ổ đĩa:

   ```bash
   lsblk
   ```

   Giả sử ổ backup là `/dev/sdb1`.
2. Tạo filesystem nếu chưa có:

   ```bash
   sudo mkfs.ext4 /dev/sdb1
   ```
3. Tạo thư mục mount:

   ```bash
   sudo mkdir -p /backup
   ```
4. Mount ổ backup:

   ```bash
   sudo mount /dev/sdb1 /backup
   ```
5. Kiểm tra:

   ```bash
   df -h
   ```

### Bước 2️⃣ Thực hiện snapshot bằng rsync

Chạy lệnh:

```bash
sudo rsync -aAXHv --delete \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/backup/*"} \
/ /backup
```

Giải thích tham số quan trọng:

* `-a` → giữ nguyên quyền, owner, symlink
* `-A` → giữ ACL
* `-X` → giữ extended attributes
* `--delete` → xóa file trên backup nếu đã xóa ở hệ thống chính

⏳ Thời gian phụ thuộc dung lượng dữ liệu.

### Bước 3️⃣ Cài lại GRUB vào bản backup (quan trọng)

1. Mount system cần thiết:

   ```bash
   sudo mount --bind /dev /backup/dev
   sudo mount --bind /proc /backup/proc
   sudo mount --bind /sys /backup/sys
   ```
2. Chroot vào hệ thống backup:

   ```bash
   sudo chroot /backup
   ```
3. Cài lại bootloader:

   ```bash
   grub-install /dev/sda
   update-grub
   ```
4. Thoát:

   ```bash
   exit
   ```
5. Unmount:

   ```bash
   sudo umount /backup/dev
   sudo umount /backup/proc
   sudo umount /backup/sys
   ```

***

## PHẦN 2 — RESTORE KHI HỆ THỐNG HỎNG

### Trường hợp: Server không boot được

#### Bước 1️⃣ Boot bằng Ubuntu Live USB

Sử dụng ISO cùng version (ví dụ 22.04).

#### Bước 2️⃣ Mount phân vùng chính

```bash
sudo mount /dev/sda1 /mnt
```

Mount ổ backup:

```bash
sudo mount /dev/sdb1 /backup
```

#### Bước 3️⃣ Restore hệ thống

```bash
sudo rsync -aAXHv --delete /backup/ /mnt/
```

#### Bước 4️⃣ Reinstall GRUB

```bash
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda
update-grub
exit
```

Unmount:

```bash
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
```

Reboot:

```bash
sudo reboot
```

***

## Kiểm tra snapshot thành công

Trên server đang chạy:

```bash
sudo rsync -navc / /backup
```

Nếu không hiển thị file khác biệt lớn → snapshot ổn định.

***

## Tự động hóa snapshot định kỳ

Tạo script:

```bash
sudo nano /usr/local/bin/system-backup.sh
```

Nội dung:

```bash
#!/bin/bash
mount /dev/sdb1 /backup
rsync -aAXHv --delete \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/backup/*"} \
/ /backup
umount /backup
```

Phân quyền:

```bash
sudo chmod +x /usr/local/bin/system-backup.sh
```

Thêm cron job:

```bash
sudo crontab -e
```

Ví dụ chạy mỗi 2h sáng:

```bash
0 2 * * * /usr/local/bin/system-backup.sh
```
