Backup_Guardian
is a backup management system that allows users to send specific folders or multiple configured folders to storage services such as FTP, Google Drive, AWS, or NAS. This modular system is organized into multiple layers, facilitating integration with various backup services and enhancing process efficiency.
- Automated Backup: Automatically configures backups for designated folders.
- Multi-Service Support: Compatible with FTP, Google Drive, AWS, and NAS.
- File Monitoring: Detects file changes and performs backups of modified files.
- Modular Design: The project is organized into modules, allowing for easy expansion and reuse.
Follow the instructions below to run Backup_Guardian
on your machine.
Before starting, ensure that the following software is installed on your machine:
- Rust - Required to compile and run the project.
- Compatible storage services (FTP, Google Drive, AWS, or NAS).
-
Clone this repository:
git clone https://github.com/your-username/Backup_Guardian.git
-
Navigate to the project directory:
cd Backup_Guardian
-
Compile the project in release mode:
cargo build --release
-
Run the generated binary:
./target/release/painel_load
Backup_Guardian/
β
βββ common/
β βββ sql_lite/ # SQLite integration module
β βββ dirs/ # Directory management
β βββ notify/ # File change monitoring
β βββ fs2/ # Filesystem management and lock control
β βββ winapi/ # Windows API interactions
β βββ winit/ # Window management in the system
β βββ tray_item/ # System tray icon control
β
βββ controller/
β βββ painel_controller/ # Controller for the control panel logic
β
βββ view/
β βββ painel_load/ # Graphical interface for the control panel
β
βββ Cargo.toml # Project configuration and dependencies
βββ README.md # Project documentation
Here are the main dependencies used in the project, as specified in the Cargo.toml file:
[dependencies]
notify = "6.1.1"
rusqlite = { version = "0.32.1", default-features = false, features = ["bundled"] }
dirs = "5.0.1"
fs2 = "0.4.3"
winapi = "0.3.9"
winit = "0.30.5"
tray-item = "0.10.0"
log = "0.4.22"
- notify: Used for monitoring changes in files and directories.
- rusqlite: SQLite database integration.
- dirs: Directory manipulation.
- fs2: Extensions for file system manipulation.
- winapi: Windows API interactions.
- winit: Window creation and management in the system.
- tray-item: System tray icon management.
This project includes the following optimizations in the Cargo.toml file:
[profile.release]
lto = "fat"
opt-level = "z"
- **LTO (Link Time Optimization): Optimizes runtime by producing more efficient binaries.
- opt-level = "z": Optimizes binary size.
To configure file transfers to backup services, access the control panel interface and input the credentials and specific settings for each service.
Supported Backup Modes
- FTP: Enter the FTP server address and credentials.
- Google Drive: Authenticate your Google account and choose the destination folder.
- AWS: Configure access keys and the S3 bucket.
- NAS: Define the network path and necessary authentications.
To run unit tests for the project, execute the following command:
cargo test
This will execute all defined tests and display their status.
- Mais Serviços de Backup: Support for new cloud storage services.
- RelatΓ³rios de Backup: Detailed reports on performed backups.
- Agendamento AutomΓ‘tico: Functionality for scheduling periodic backups.
This project is licensed under the terms of the MIT license. See the LICENSE file for more details.