A command-line tool that monitors specified files and creates backups whenever changes are detected with versioning support.
- Monitor multiple files for changes
- Timestamped backups with precise microsecond resolution
- Versioning support to keep track of multiple changes
- Miminal delay between backups to avoid excessive file creation
- Recursive directory monitoring
- Worker pool - process multiple files concurrently
- Ignoring specific files or directories (e.g., .tmp,.DS_Store,.git)
- Retry mechanism for robustness
- Color-coded terminal output for better readability
- Go 1.21 of higher
- 
Clone the repository: git clone https://github.com/cyprian/file-watcher-backup cd file-watcher-backup
- 
Build the project: go mod download go build -o file-watcher 
- 
(Optional) Move the binary to global path: mv file-watcher /usr/local/bin/ 
./file-watcher --source ./my-project --backup ./backupsOr with all options:
./file-watcher \
  --source ./my-project \
  --backup ./backups \
  --versions 5 \
  --interval 10s- --source(string, required): Path to the source file or directory to monitor.
- --backup(string, required): Path to the backup directory where backups will be stored.
- --versions(int, default: 3): Number of backup versions to keep for each file.
- --interval(duration, default: 5s): Minimum interval between backups.
- Configure delay time
- Add tests
-  Add command to load ignoring paths or files from a file or multiple arguments (e.g., --ignore .tmp .DS_Store .git)
- Add support for backup compression
- Add performance benchmarks