A simple terminal-based Backup & Restore Utility in Java. This tool allows the users to create and restore backups of files easily. Not production-ready: GC (JVM) issues for large backup/restore operations.
- Basic File Backup: Ability to backup specified files and directories.
- Basic File Restore: Ability to restore from a backup.
- Basic Test Suite: Test suite for basic functionality.
- Multi-threading: Utilize multiple threads for faster backup and restore operations.
- Backup Compression: Compress the backup files to save space.
- Backup & File Size: Provide backup size & file count before proceeding.
- Chunking -> Merging: Break up into smaller chunks (for concurrency) & merge them together.
- Single Backup File: Create a single backup file, maintaining folder structure.
- Encryption Decryption: Encrypt & decrypt backup files for added security.
- Inclusion/Exclusion: Specify file patterns to include/exclude from backup & restore.
- Backup Integrity Checks: Verify the integrity of backup & restore files.
- Code Refactoring: Refactor the codebase to improve readability and maintainability.
- Log Generation: Generate logs detailing the backup and restore operations.
- Disk Space Checks: Warn user if not enough disk space is available for backup/restore.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch:
git checkout -b feature/AmazingFeature
- Commit your Changes:
git commit -m 'Add some AmazingFeature'
- Push to the Branch:
git push origin feature/AmazingFeature
- Open a Pull Request
- Differential Backups: Only back up files that have changed since the last (full) backup.
- Incremental Backups: Only back up files that have changed since the last (any) backup.
- Priority Backups: Allow setting priority for specific files or directories in backup.
- Data Deduplication: Check for and eliminate duplicate data to save space.
- Backup Versioning: Save multiple versions of backup file (as soon as it is modified).
- Commit/Rollback Mgmt.: Offer transaction mechanism to guarantee backup & restore integrity.
- API Integration: Allow integration with other systems - used as a service by other apps.
- Backup to Remote Server: Ability to backup to a remote server via FTP or SSH.
- Scheduled Backups: Ability to schedule backups at recurring intervals.
- Bandwidth Throttling: Limit the amount of network bandwidth used during backup to a remote server.
- Notification & Alerts: Send status reports, success/failure notifications, and alerts.
- User Access Control: Restrict who can perform backup/restore to prevent unauthorized data access.
- Multi-Platform Support: Ability to backup data from various operating systems, databases & apps.
- Cross-Platform Restore: Ability to restore data to different hardware or operating systems.
Distributed under the MIT License. See LICENSE
for more information.