Công cụ Đồng bộ So sánh Dựa trên Địa chỉ Nội dung

Công cụ Đồng bộ So sánh Dựa trên Địa chỉ Nội dung (Content-Addressable File Sync Tool)

Một công cụ so sánh và đồng bộ nội dung giữa các thư mục, được phát triển dựa trên PyQt6. Hỗ trợ so sánh nhiều thư mục cùng lúc, khớp nội dung bằng hàm băm (bỏ qua tên/tải đường dẫn), thao tác tệp song song, chế độ xem trước "khô" (dry run), điều chỉnh chiều rộng cột thông minh và giao diện hoàn toàn bằng tiếng Việt. Phù hợp cho việc xác thực sao lưu, di chuyển thư viện tài nguyên, kiểm tra tính nhất quán đồng bộ đa thiết bị, v.v. 📦 Phiên bản: v0.5.7 | 🐍 Ngôn ngữ: Python 3.10+ | 🖼️ Framework: PyQt6

Liên kết kho mã

  • github

Tính năng cốt lõi

Loại Mô tả
**So sánh dựa trên địa chỉ nội dung** Sử dụng các thuật toán băm nhanh như xxHash3 / MD5 / SHA-256, ưu tiên khớp đường dẫn tương đối, sau đó quay về băm toàn cục, nhận dạng chính xác các tệp được đổi tên/đổi vị trí
**Thao tác hai chiều nguồn/đích** Hỗ trợ bốn thao tác chính: Sao chép đồng bộ, Thay thế sang phải, Đổi tên đích, Xóa tệp thừa ở đích, thực hiện hàng loạt hoặc từng tệp riêng lẻ
**Lập lịch nhiệm vụ song song** Tích hợp pool luồng để thực thi đồng thời, hỗ trợ điều chỉnh động số luồng song song từ 1~16 (trong bảng cài đặt), tăng hiệu suất đáng kể cho các thao tác tệp số lượng lớn
️ **Chế độ xem trước "khô"** Công tắc an toàn toàn cục, khi bật chỉ xuất nhật ký thao tác mà không sửa đổi tệp nào trên đĩa, xác nhận chính xác rồi mới tắt để thực hiện đồng bộ thực
**Tương tác chiều rộng cột thông minh** Tính toán động chiều rộng tối thiểu của tiêu đề cột; khi kéo đường phân cách chỉ ảnh hưởng đến cột liền kề, chống phá vỡ giới hạn hai chiều, biên phải luôn dán sát cửa sổ
**Địa phương hóa hoàn toàn bằng tiếng Việt** Giao diện, gợi ý, nhật ký, tùy chọn cấu hình 100% bằng tiếng Việt, không lẫn tiếng Anh, phù hợp với thói quen tương tác phần mềm máy tính để bàn tiếng Việt
**Lưu cấu hình vĩnh viễn** Tự động lưu/tải danh sách thư mục, trạng thái lọc, thuật toán, số luồng song song, chế độ xem trước vào sync\_tool\_config.json
**Giao diện UI hiện đại** Chủ đề sáng, biểu tượng động, bộ lọc thả xuống có chọn nhiều, bảng cài đặt ba nút (Xác nhận và lưu/Xác nhận/Hủy), nút đổi chỗ nguồn/đích một cú nhấp

️ Công nghệ sử dụng

Python 3.10+
PyQt6 (Framework GUI)
xxhash (Thuật toán băm tốc độ cao)
concurrent.futures (Pool luồng song song)
PyInstaller (Tùy chọn: Đóng gói thành tệp thực thi độc lập)

Cài đặt và chạy

1. Chuẩn bị môi trường

# Sao chép hoặc tải xuống dự án
git clone https://github.com/mikey-666/content-sync-tool.git
cd content-sync-tool

# Cài đặt các thư viện cần thiết
pip install PyQt6 xxhash

2. Khởi chạy chương trình

python content_sync_v0.5.7.py

Lần chạy đầu tiên, nếu thiếu thư viện, chương trình sẽ tự động gọi pip cài đặt im lặng. Sau khi cài đặt xong, vui lòng khởi động lại chương trình.

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

️ Bố cục giao diện

┌──────────────────┬──────┬──────────────────┐
│  📂 Nguồn (nhiều lựa chọn)│ 🔄   │  📂 Đích (nhiều lựa chọn)│
│  [Kéo thả/Thêm bằng nút]  │ Đổi chỗ  │  [Kéo thả/Thêm bằng nút]  │
└──────────────────┴──────┴──────────────────┘
⚡ Bắt đầu so sánh | 🔍 Bộ lọc thả xuống | [Nhóm nút thao tác hàng loạt] | ⚙️ Cài đặt
──────────────────────────────────────────────
📊 Bảng kết quả (Đường dẫn nguồn | Trạng thái | Đường dẫn đích | Thao tác)
──────────────────────────────────────────────
📈 Thanh tiến độ

Các thao tác cốt lõi

  1. Thêm thư mục: Nhấp vào Chọn thư mục để hỗ trợ chọn nhiều thư mục bằng Ctrl/Shift, hoặc kéo thả trực tiếp từ trình quản lý tệp vào danh sách.
  2. Bắt đầu so sánh: Nhấp vào Bắt đầu so sánh bằng hàm băm, thanh tiến độ sẽ cập nhật theo thời gian thực. Sau khi hoàn tất, bảng kết quả sẽ được nhóm theo trạng thái.
  3. Lọc kết quả: Nhấp vào menu thả xuống Lọc:, đánh dấu/ bỏ đánh dấu các tùy chọn Thiếu ở đích, Nội dung giống nhưng đổi tên, Tên giống nhưng nội dung khác, Tệp thừa ở đích, Tên và nội dung hoàn toàn giống nhau.
  4. Thực hiện thao tác:
  • Nhấp vào nút ở cuối hàng để thực hiện thao tác trên một tệp duy nhất
  • Nhấp vào các nút Sao chép đồng bộ / Thay thế sang phải / ️ Đổi tên đích / ️ Xóa thừa / Thực hiện tất cả ở đầu để xử lý hàng loạt
  1. Đổi chỗ nguồn/đích: Nhấp vào nút Đổi chỗ ở giữa, ngay lập tức hoán đổi danh sách thư mục hai bên và xóa kết quả, hỗ trợ xác thực ngược.
  2. Bảng cài đặt: Nhấp vào ️ Cài đặt, có thể điều chỉnh thuật toán băm, số luồng song song, chế độ xem trước, và cung cấp ba nút riêng biệt Xác nhận và lưu / Xác nhận / Hủy.

Quản lý cấu hình

Chương trình sẽ tạo ra sync_tool_config.json trong cùng thư mục, cấu trúc ví dụ:

{
  "version": "0.5.7",
  "src_folders": ["/đường/dẫn/tới/nguồn1", "/đường/dẫn/tới/nguồn2"],
  "dst_folders": ["/đường/dẫn/tới/đích"],
  "filters": {
    "missing": true,
    "renamed": true,
    "diff": true,
    "extra": true,
    "same": false
  },
  "hash_algo": "xxHash3 (Khuyến nghị tốc độ cao)",
  "dry_run": true,
  "parallel_workers": 4
}

Hỗ trợ tự động tương thích với cấu hình phiên bản cũ, các trường bị thiếu sẽ được tự động điền giá trị mặc định.

Đóng gói thành tệp thực thi độc lập

Sử dụng PyInstaller có thể tạo ra chương trình không cần môi trường Python:

pip install pyinstaller
PyInstaller --onefile --noconsole --collect-all PyQt6 --name="Công cụ Đồng bộ So sánh Dựa trên Địa chỉ Nội dung" v0.5.7.py

Tệp được tạo sẽ nằm ở dist/Công cụ Đồng bộ So sánh Dựa trên Địa chỉ Nội dung.exe (Windows) hoặc tệp thực thi tương ứng trên các nền tảng khác.

️ Lưu ý: Gói một tệp lần đầu sẽ giải nén vào thư mục tạm, tốc độ khởi động chậm hơn 2-3 giây. Nếu muốn tốc độ cực nhanh, có thể sử dụng tham số --onedir để tạo phiên bản dạng thư mục.

Giấy phép Mã nguồn mở

Dự án này được phát hành theo giấy phép MIT License.

MIT License

Copyright (c) 2026 mikey-666

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE AND THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Giải thích giấy phép

  • Cho phép: Sử dụng thương mại, sửa đổi, phân phối, triển khai riêng tư, đóng gói lại
  • Yêu cầu: Giữ nguyên thông báo bản quyền và thông báo quyền sử dụng ban đầu
  • Miễn trừ: Phần mềm được cung cấp "nguyên bản", tác giả không chịu bất kỳ trách nhiệm nào, trực tiếp hay gián tiếp
  • Tuân thủ: Giấy phép MIT là một trong những giấy phép mã nguồn mở linh hoạt nhất trên toàn cầu, hoàn toàn tuân thủ quy định mã nguồn mở GitHub và nguyên tắc về việc sử dụng, sửa đổi và phân phối nội dung được tạo tự do của người dùng.

Đóng góp và hỗ trợ

Chào mừng gửi Issue để phản hồi vấn đề hoặc Pull Request để đóng góp mã. Dự án này được phát triển bởi cộng đồng, nhằm cung cấp giải pháp so sánh và đồng bộ tệp nhẹ, minh bạch và có thể tùy chỉnh.

Phản hồi / Yêu cầu tính năng: Vui lòng gửi qua GitHub Issues 🔧 Phát triển thứ hai: Tuân thủ giấy phép MIT để tự do sửa đổi và phân phối

Lưu ý an toàn dữ liệu: Công cụ này liên quan đến các thao tác sao chép, thay thế, xóa tệp. Khuyến nghị lần đầu sử dụng nên giữ ️ Chỉ xem trước (dry run) ở trạng thái bật, xác nhận logic chính xác rồi mới tắt để thực hiện thao tác thực. Dữ liệu quan trọng vui lòng sao lưu trước.

Thẻ: PyQt6 python xxHash đồng bộ hóa tệp so sánh nội dung

Đăng vào ngày 26 tháng 6 lúc 05:20