# Khởi động nhanh

- [Khởi động nhanh](#quick-start)
    - [Tổng quan giao diện](#interface-overview)
        - [Giao diện quản lý tác vụ](#task-management-interface)
        - [Giao diện tạo tác vụ](#create-task-interface)
        - [Giao diện tạo nút (Node)](#create-node-interface)
        - [Giao diện tạo nguồn](#create-source-interface)
    - [Hướng dẫn sử dụng](#instructions)
        - [Thêm điểm cuối (Endpoint)](#add-endpoint)
        - [Tạo tác vụ](#create-task)
        - [Bắt đầu di chuyển](#start-migration)
        - [Tạm dừng di chuyển](#pause-migration)
        - [Thử lại](#retry)
        - [Xuất danh sách tệp bị lỗi](#export-failed-file-list)
    - [Giải thích bộ nhớ đệm (Cache)](#cache-explanation)
    - [Tổng quan về các loại di chuyển](#migration-type-overview)
        - [S3](#s3)
        - [local](#local)
        - [http](#http)


---

## Hướng dẫn giao diện

Sau khi dịch vụ khởi động, hãy truy cập giao diện US3SYNC bằng cách mở trang https://<web service listening IP>:<web service listening port> trong trình duyệt, nơi bạn có thể thực hiện các thao tác di chuyển dữ liệu.

### Giao diện quản lý tác vụ
- **Thao tác tác vụ:**
    - **Bắt đầu di chuyển (Start Migration):** Bắt đầu di chuyển tệp.
    - **Bắt đầu xác thực (Start Validation):** Thực hiện xác thực tệp bằng cách so sánh kích thước tệp giữa thư mục nguồn và thư mục đích, lấy danh sách tệp đầy đủ từ cả hai.
    - **Quản lý - Thử lại (Manage - Retry):** Thử lại việc di chuyển các tệp đã bị lỗi trong các lần thử trước.
    - **Quản lý - Xuất (Manage - Export):** Xuất danh sách các tệp bị lỗi sang vị trí `.US3SYNC/details/[jobid]/error.log` trong bucket đích.
    - **Quản lý - Xóa (Manage - Delete):** Xóa một tác vụ và xóa các bản ghi bộ nhớ đệm của tác vụ đó.
    - **Quản lý - Sao chép (Manage - Clone):** Mở giao diện tạo tác vụ với thông tin của tác vụ hiện tại đã được điền sẵn.

- **Thống kê:**

```
=================================
Tổng số tệp:     Tổng số tệp cần di chuyển.
Tệp đang chờ:    Số lượng tệp đang chờ di chuyển.
Đang tiến hành:  Số lượng tệp hiện đang được di chuyển.
Thành công:     Số lượng tệp đã di chuyển thành công.
Thất bại:       Số lượng tệp di chuyển thất bại.
=================================
```

- **Xuất nhật ký lỗi:**
  Nếu tác vụ di chuyển thất bại, hãy sử dụng nút **Xuất (Export)** trong giao diện quản lý tác vụ để xuất nhật ký lỗi. Các nhật ký này sẽ được tải lên S3 và một URL tải xuống sẽ được cung cấp.  
  Bạn có thể tải xuống các nhật ký này bằng cách sử dụng `wget` từ máy nút (worker node) và khắc phục sự cố bằng cách tham khảo phần Câu hỏi thường gặp (FAQ).

---

### Giao diện tạo tác vụ

- **Loại tác vụ (Task Type):** Chọn loại tác vụ di chuyển.
- **Khớp Regex (Regex Match Keys):** Sử dụng biểu thức chính quy (regular expressions) để lọc danh sách nguồn.
- **Lịch trình thực thi (Schedule Execution):** Cấu hình thực thi định kỳ.
- **Đồng bộ hóa xóa (Sync Deletion):** Xóa các tệp ở đích không tồn tại ở nguồn.
- **ID công việc (Job ID):** Nhấp vào biểu tượng mở rộng bên cạnh tên tác vụ để lấy Job ID.

---

### Giao diện tạo nút (Node)

- **Địa chỉ IP (IP Address):** Nhập địa chỉ IP của nút công việc (worker node).
- **Tên người dùng (Username):** Nhập tên người dùng SSH cho nút công việc.
- **Mật khẩu (Password):** Nhập mật khẩu SSH cho nút công việc (để trống nếu đăng nhập không cần mật khẩu).

---

### Giao diện tạo nguồn

- **Thời gian chờ (Timeout):** Chỉ định thời gian chờ tải lên/tải xuống (mặc định là 60 giây).
- **Tên miền (Domain):** Nhập hậu tố tên miền của bucket, ví dụ: `cn-bj.ufileos.com`.
- **Tiền tố (Prefix):** Sử dụng `PrefixFileList` để nhập nhiều tiền tố.

---

## Hướng dẫn sử dụng

### Thêm điểm cuối (Endpoint)

Thêm nguồn di chuyển bằng cách nhấp vào nút **Tạo điểm cuối (Create Endpoint)**. Điền thông tin bắt buộc vào hộp thoại và nhấp vào **OK**.

---

### Tạo tác vụ

Tạo tác vụ di chuyển bằng cách nhấp vào nút **Tạo tác vụ (Create Task)**. Điền thông tin bắt buộc vào hộp thoại và nhấp vào **OK**.
Để tạo tác vụ thu thập (fetch task), chọn tùy chọn **Tác vụ thu thập (Fetch Task)** trong giao diện.
Để lấy **Job ID**, nhấp vào biểu tượng mở rộng bên cạnh tên tác vụ.

**Quy trình di chuyển:**

- Các tệp dưới tiền tố nguồn được chỉ định sẽ được di chuyển đến tiền tố đích được chỉ định.

Ví dụ:

```
1. Tiền tố nguồn: A/ | Tiền tố đích: B/
Tất cả các tệp dưới thư mục A/ sẽ được di chuyển đến B/.
Ví dụ: Tệp nguồn A/a.txt sẽ trở thành B/a.txt tại đích.

2. Tiền tố nguồn: A/ | Tiền tố đích: (trống)
Tất cả các tệp dưới thư mục A/ sẽ được di chuyển đến thư mục gốc của đích.
Ví dụ: Tệp nguồn A/a.txt sẽ trở thành a.txt tại thư mục gốc của đích.
```

**Tùy chọn ghi đè:**

- **Ghi đè hoàn toàn (Full Overwrite):** Bắt buộc tải lên tất cả các tệp từ nguồn lên S3.
- **Ghi đè có điều kiện (Conditional Overwrite):** Di chuyển các tệp dựa trên các tiêu chí được chỉ định:
    - Loại tệp
    - Kích thước tệp
    - Dấu thời gian của tệp (di chuyển các tệp mới hơn ở nguồn).

- **Không ghi đè (No Overwrite):** Bỏ qua các tệp đã tồn tại ở đích.

**Tác vụ theo lịch trình:**

- Cấu hình việc di chuyển chạy định kỳ, chỉ định khoảng thời gian và thời gian bắt đầu.

**Bộ lọc tăng dần (Incremental Filters):**

- **Bộ lọc thời gian tuyệt đối (Absolute Time Filter):** Chỉ định thời gian bắt đầu di chuyển tệp.
- **Bộ lọc thời gian gần đây (Recent Time Filter):** Chỉ định các tệp được sửa đổi trong vài giờ qua. Đối với các tác vụ định kỳ, bộ lọc sẽ tự động điều chỉnh dựa trên thời gian hiện tại.

**Khớp Regex:**

- Nếu được bật, danh sách nguồn sẽ được lọc bằng biểu thức chính quy được chỉ định.
- Biểu thức chính quy không khớp với tiền tố nguồn, cho phép kiểm soát chi tiết hơn bên trong một tiền tố.

---

### Thêm cảnh báo

- Thông báo sẽ được gửi qua yêu cầu POST khi hoàn thành tác vụ hoặc khi nút công việc (worker) bị lỗi.
- Thu thập các chỉ số lỗi cho các tác vụ di chuyển và tác vụ thu thập (fetch).
- Cấu hình các quy tắc cảnh báo tùy chỉnh cho các lỗi tác vụ bằng logic dạng chuỗi. Thông báo sẽ được gửi qua yêu cầu POST khi quy tắc được kích hoạt.

**Ví dụ về Logic cảnh báo:**

```
(RESOURCE_ERR_4XX > 100 || RESOURCE_ERR_5XX > 200) && TARGET_ERR_4XX > 150 && Q_LEN > 150
```

**Các biến được hỗ trợ:**

- `RESOURCE_ERR_4XX`: Số lượng lỗi 4XX từ nguồn.
- `RESOURCE_ERR_5XX`: Số lượng lỗi 5XX từ nguồn.
- `TARGET_ERR_4XX`: Số lượng lỗi 4XX từ đích.
- `TARGET_ERR_5XX`: Số lượng lỗi 5XX từ đích.
- `LOCAL_ERR`: Số lượng lỗi khác.
- `Q_LEN`: Số lượng tệp trong hàng đợi tác vụ thu thập.

---

### Bắt đầu di chuyển

Tham khảo [Tổng quan giao diện](#interface-overview) và nhấp vào nút **Bắt đầu di chuyển (Start Migration)**.

---

### Tạm dừng di chuyển

Tham khảo [Tổng quan giao diện](#interface-overview) và nhấp vào nút **Tạm dừng (Pause)**.

---

### Thử lại

Thử lại việc di chuyển các tệp bị lỗi bằng cách nhấp vào **Quản lý - Thử lại (Manage - Retry)** trong [Giao diện quản lý tác vụ](#task-management-interface).

---

### Xuất danh sách tệp bị lỗi

Xuất danh sách các tệp bị lỗi bằng cách nhấp vào **Quản lý - Xuất (Manage - Export)** trong [Giao diện quản lý tác vụ](#task-management-interface).

---

## Giải thích bộ nhớ đệm (Cache)

US3SYNC sử dụng **Pika** để cung cấp dịch vụ bộ nhớ đệm. Dữ liệu được lưu trong bộ nhớ đệm bao gồm:

- Chi tiết tác vụ
- Thống kê di chuyển
- Nhật ký di chuyển

---

## Tổng quan về các loại di chuyển

| Loại | Mô tả |
|-------|-----------------------------------------------------------------------------|
| S3    | Di chuyển dựa trên giao diện S3, hỗ trợ bất kỳ nền tảng đám mây nào có API S3 |
| OSS   | Di chuyển dựa trên giao diện lưu trữ đám mây OSS                             |
| Qiniu | Di chuyển dựa trên giao diện lưu trữ đám mây Qiniu                           |
| Youpai| Di chuyển dựa trên giao diện lưu trữ đám mây Youpai                          |
| S3   | Di chuyển dựa trên giao diện lưu trữ đám mây S3                             |
| NAS   | Di chuyển từ hệ thống NAS hoặc tệp cục bộ                                    |
| URL   | Di chuyển dựa trên danh sách các URL                                         |

---

### S3

Nguồn AWS S3 yêu cầu thêm trường `region` (vùng). Tham khảo tại:
<https://docs.aws.amazon.com/zh_cn/general/latest/gr/s3.html>.

Đối với các triển khai S3 của bên thứ ba, vui lòng tham khảo tài liệu tương ứng.

---

### local

Nguồn `local` yêu cầu cung cấp đường dẫn thư mục.

---

### http

Nguồn `http` yêu cầu danh sách URL của các tệp cần di chuyển. Mỗi dòng trong danh sách phải đại diện cho một URL tệp:

```
<file URL>
<file URL>
```