https://github.com/taoky/bestbind
Select best IP to bind for OSS mirror admins
https://github.com/taoky/bestbind
git mirrors rsync speedtest
Last synced: 5 months ago
JSON representation
Select best IP to bind for OSS mirror admins
- Host: GitHub
- URL: https://github.com/taoky/bestbind
- Owner: taoky
- License: mit
- Created: 2022-09-11T19:07:30.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2025-10-04T12:47:33.000Z (9 months ago)
- Last Synced: 2025-10-09T18:21:45.200Z (9 months ago)
- Topics: git, mirrors, rsync, speedtest
- Language: Rust
- Homepage:
- Size: 148 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bestbind
(Old name: admirror-speedtest, rsync-speedtest)
A simple speedtest program for multiple-IPs (ISP) environment, to optimize the speed of syncing from upstream. **Supports rsync, curl, wget and git; you can also test with Docker/Podman networks**.
PS: There's a racing bug in rsync that prevents proper termination of rsync processes, and it has been workarounded in rsync-speedtest. See comments of [`kill_children()` in main.rs](src/main.rs) for details.
## Args
```console
$ ./bestbind --help
Test speed (bandwidth) of different bind IP to rsync, http(s) and git upstream. Alleviate mirror site admin's trouble choosing fastest bind IP.
Usage: bestbind [OPTIONS]
Arguments:
Upstream path. Will be given to specified program
Options:
--profile Profile name in config file. If not given, it will use "default" profile [default: default]
-c, --config Config file (IP list) path. Select order is bestbind.conf in XDG config, then ~/.bestbind.conf, then /etc/bestbind.conf
-p, --pass Passes number [default: 3]
-t, --timeout Timeout (seconds) [default: 30]
--tmp-dir Tmp file path. Default to `env::temp_dir()` (/tmp in Linux system)
--log Log file. Default to /dev/null When speedtesting, the executed program output is redirected to this file [default: /dev/null]
--program Program to use. It will try to detect by default (here curl will be used default for http(s)) [possible values: rsync, wget, curl, git]
--extra Extra arguments. Will be given to specified program
-h, --help Print help
-V, --version Print version
```
### Git support
`libbinder.so` will be searched by this order:
- `/usr/lib/bestbind/libbinder.so`
- The path `LIBBINDER_PATH` env var points to
Note that libbinder is now seperated to another repo: , with glibc & musl support.
It throws error and git support will not be available if `libbinder.so` is not found.
## Config file format
Format from 0.4.0 is not compatible with previous versions.
See [assets/bestbind.conf.example](assets/bestbind.conf.example) for example.
## Screenshot
