A real-time backup solution for Linux that provides automated, incremental file backup and synchronization via a responsive web-based interface. Monitors your files continuously and backs them up instantly as they change. Tested and optimized on Fedora Linux.
| Component | Feature | Description |
|---|---|---|
| Real-time Backup | Instant File Monitoring | Uses watchdog to detect file changes immediately and back them up as they happen |
| Interface | Modern Web UI | Responsive interface built with HTML/CSS and Tailwind CSS |
| Backend | Python & Flask | Robust backend handling all logic and device management |
| Backup | Automated & Incremental | Continuous background monitoring, only copies changed files |
| Restore File | Restore file | Able to restore a single file from any previous backup version |
| Restore Folder | Restore Folder | Able to restore an entire folder from any previous backup version |
| Optimization | Hardlink Optimization | Reuses file data on backup target to save space |
| Tracking | Hash-based File Tracking | Track files across moves and renames using content hashes |
| Flexibility | Storage Management | Easy management of external backup storage devices |
| Main Dashboard |
|
| File Restore |
|
| File Restore |
|
| File Restore |
|
| Device Management |
|
| Backup Settings |
|
- Python 3.7+
- Linux system (tested on Fedora)
# Clone the repository
git clone [https://github.com/GeovaneJefferson/timemachine.git](https://github.com/GeovaneJefferson/timemachine.git)
cd timemachine
# Install dependencies
### Fedora
sudo dnf update
sudo dnf install python3 python3-pip nodejs npm
### Ubuntu
sudo apt update
sudo apt install python3 python3-pip nodejs npm
# Pip install dependencies
pip install -r requirements.txt# Start the server
python3 app.pyThen open your browser to http://localhost:5000 and follow the setup wizard.
## β οΈ Important Notes
# Real-time Backup Operation
Important Note: You must launch the Web Interface at least once (python3 app.py) to choose a backup device and folders before using this method.
# Run just the real-time backup daemon
python3 daemon.pyThis starts the real-time monitoring without the web interface.
timemachine/
βββ config/ # Configuration Files
βββ static/ # Web assets (CSS, JS, images)
βββ templates/ # HTML templates
βββ app.py # Flask application (Web Interface)
βββ daemon.py # Core Backup Daemon (Real-time monitoring engine)
βββ server.py # Shared server functionality
βββ search_handler.py # File search logic
βββ storage_util.py # Storage device detection
βββ .gitignore
βββ requirements.txt
TimeMachine uses watchdog to monitor filesystem events in real-time:
- Instant detection of file changes, creations, and deletions
- Event-driven architecture for minimal CPU usage
- Incremental backup - only changed files are copied
- Continuous operation - runs 24/7 in background
- Clean Architecture: Clear separation of UI from core engine
- Rapid Development: Quick iteration without complex native toolkits
- Remote Access: Potential for network-based management
- Learning Platform: Modern web application patterns
- Personal Learning: I know electron is not the best choose for app, but i wanted to learn a new framework. If i can enough support, may upgrade to Gtk4 or Qt6.
- Continuous Monitoring: Once started, TimeMachine runs continuously in background
- Immediate Backup: File changes are backed up within seconds of being saved
- Immediate Backup v2: Countdown for a faster changed files of 1 min.
- Low Resource: Efficient monitoring with minimal system impact
- In Development!: Many things may change in the future
After every system reboot, you must manually restart the daemon by:
- Running
python3 app.pyand using the web interface - Opening
http://localhost:5000 - Clicking the "Run" button
- Or simply running
python3 daemon.pydirectly in terminal
Designed and tested for Linux systems, primarily Fedora. Other distributions may require adjustments.
- Auto startup on boot
- Native UI integration (GTK4/Qt6)
- System tray icon
- Desktop notifications for backup events
- Remote management
- Multiple backup targets
- Backup encryption
-
"Permission denied" errors
- Ensure write access to backup target
- Use appropriate permissions for system folders
-
Daemon not starting
- Verify Python dependencies are installed
- Run daemon.py in terminal, chceck for errors
-
Device not detected
- Ensure storage device is properly mounted
- Check USB connection if using external drive
- Use SSD for backup target for faster operations
This project is licensed under the MIT License - see the LICENSE file for details.