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 ./backups
Or 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