mirror of
https://github.com/rclone/rclone.git
synced 2024-11-29 03:48:27 +08:00
Change byte unit format from MiByte to MiB
This commit is contained in:
parent
8500d95579
commit
f1f923a986
|
@ -66,7 +66,7 @@ const (
|
||||||
//
|
//
|
||||||
// Speed vs chunk size uploading a 1 GiB file on 2017-11-22
|
// Speed vs chunk size uploading a 1 GiB file on 2017-11-22
|
||||||
//
|
//
|
||||||
// Chunk Size MiB, Speed MiByte/s, % of max
|
// Chunk Size MiB, Speed MiB/s, % of max
|
||||||
// 1 1.364 11%
|
// 1 1.364 11%
|
||||||
// 2 2.443 19%
|
// 2 2.443 19%
|
||||||
// 4 4.288 33%
|
// 4 4.288 33%
|
||||||
|
|
|
@ -51,11 +51,11 @@ output. The output is typically used, free, quota and trash contents.
|
||||||
|
|
||||||
E.g. Typical output from ` + "`rclone about remote:`" + ` is:
|
E.g. Typical output from ` + "`rclone about remote:`" + ` is:
|
||||||
|
|
||||||
Total: 17 GiByte
|
Total: 17 GiB
|
||||||
Used: 7.444 GiByte
|
Used: 7.444 GiB
|
||||||
Free: 1.315 GiByte
|
Free: 1.315 GiB
|
||||||
Trashed: 100.000 MiByte
|
Trashed: 100.000 MiB
|
||||||
Other: 8.241 GiByte
|
Other: 8.241 GiB
|
||||||
|
|
||||||
Where the fields are:
|
Where the fields are:
|
||||||
|
|
||||||
|
|
|
@ -427,9 +427,9 @@ possibly signed sequence of decimal numbers, each with optional
|
||||||
fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid
|
fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid
|
||||||
time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
|
time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
|
||||||
|
|
||||||
Options which use SIZE use KiByte (multiples of 1024 bytes) by default.
|
Options which use SIZE use KiB (multiples of 1024 bytes) by default.
|
||||||
However, a suffix of `B` for Byte, `K` for KiByte, `M` for MiByte,
|
However, a suffix of `B` for Byte, `K` for KiB, `M` for MiB,
|
||||||
`G` for GiByte, `T` for TiByte and `P` for PiByte may be used. These are
|
`G` for GiB, `T` for TiB and `P` for PiB may be used. These are
|
||||||
the binary units, e.g. 1, 2\*\*10, 2\*\*20, 2\*\*30 respectively.
|
the binary units, e.g. 1, 2\*\*10, 2\*\*20, 2\*\*30 respectively.
|
||||||
|
|
||||||
### --backup-dir=DIR ###
|
### --backup-dir=DIR ###
|
||||||
|
@ -473,9 +473,9 @@ This option controls the bandwidth limit. For example
|
||||||
|
|
||||||
--bwlimit 10M
|
--bwlimit 10M
|
||||||
|
|
||||||
would mean limit the upload and download bandwidth to 10 MiByte/s.
|
would mean limit the upload and download bandwidth to 10 MiB/s.
|
||||||
**NB** this is **bytes** per second not **bits** per second. To use a
|
**NB** this is **bytes** per second not **bits** per second. To use a
|
||||||
single limit, specify the desired bandwidth in KiByte/s, or use a
|
single limit, specify the desired bandwidth in KiB/s, or use a
|
||||||
suffix B|K|M|G|T|P. The default is `0` which means to not limit bandwidth.
|
suffix B|K|M|G|T|P. The default is `0` which means to not limit bandwidth.
|
||||||
|
|
||||||
The upload and download bandwidth can be specified seperately, as
|
The upload and download bandwidth can be specified seperately, as
|
||||||
|
@ -483,13 +483,13 @@ The upload and download bandwidth can be specified seperately, as
|
||||||
|
|
||||||
--bwlimit 10M:100k
|
--bwlimit 10M:100k
|
||||||
|
|
||||||
would mean limit the upload bandwidth to 10 MiByte/s and the download
|
would mean limit the upload bandwidth to 10 MiB/s and the download
|
||||||
bandwidth to 100 KiByte/s. Either limit can be "off" meaning no limit, so
|
bandwidth to 100 KiB/s. Either limit can be "off" meaning no limit, so
|
||||||
to just limit the upload bandwidth you would use
|
to just limit the upload bandwidth you would use
|
||||||
|
|
||||||
--bwlimit 10M:off
|
--bwlimit 10M:off
|
||||||
|
|
||||||
this would limit the upload bandwidth to 10 MiByte/s but the download
|
this would limit the upload bandwidth to 10 MiB/s but the download
|
||||||
bandwidth would be unlimited.
|
bandwidth would be unlimited.
|
||||||
|
|
||||||
When specified as above the bandwidth limits last for the duration of
|
When specified as above the bandwidth limits last for the duration of
|
||||||
|
@ -511,19 +511,19 @@ working hours could be:
|
||||||
|
|
||||||
`--bwlimit "08:00,512k 12:00,10M 13:00,512k 18:00,30M 23:00,off"`
|
`--bwlimit "08:00,512k 12:00,10M 13:00,512k 18:00,30M 23:00,off"`
|
||||||
|
|
||||||
In this example, the transfer bandwidth will be set to 512 KiByte/s
|
In this example, the transfer bandwidth will be set to 512 KiB/s
|
||||||
at 8am every day. At noon, it will rise to 10 MiByte/s, and drop back
|
at 8am every day. At noon, it will rise to 10 MiB/s, and drop back
|
||||||
to 512 KiByte/sec at 1pm. At 6pm, the bandwidth limit will be set to
|
to 512 KiB/sec at 1pm. At 6pm, the bandwidth limit will be set to
|
||||||
30 MiByte/s, and at 11pm it will be completely disabled (full speed).
|
30 MiB/s, and at 11pm it will be completely disabled (full speed).
|
||||||
Anything between 11pm and 8am will remain unlimited.
|
Anything between 11pm and 8am will remain unlimited.
|
||||||
|
|
||||||
An example of timetable with `WEEKDAY` could be:
|
An example of timetable with `WEEKDAY` could be:
|
||||||
|
|
||||||
`--bwlimit "Mon-00:00,512 Fri-23:59,10M Sat-10:00,1M Sun-20:00,off"`
|
`--bwlimit "Mon-00:00,512 Fri-23:59,10M Sat-10:00,1M Sun-20:00,off"`
|
||||||
|
|
||||||
It means that, the transfer bandwidth will be set to 512 KiByte/s on
|
It means that, the transfer bandwidth will be set to 512 KiB/s on
|
||||||
Monday. It will rise to 10 MiByte/s before the end of Friday. At 10:00
|
Monday. It will rise to 10 MiB/s before the end of Friday. At 10:00
|
||||||
on Saturday it will be set to 1 MiByte/s. From 20:00 on Sunday it will
|
on Saturday it will be set to 1 MiB/s. From 20:00 on Sunday it will
|
||||||
be unlimited.
|
be unlimited.
|
||||||
|
|
||||||
Timeslots without `WEEKDAY` are extended to the whole week. So this
|
Timeslots without `WEEKDAY` are extended to the whole week. So this
|
||||||
|
@ -542,7 +542,7 @@ being the non HTTP backends, `ftp`, `sftp` and `tardigrade`).
|
||||||
Note that the units are **Byte/s**, not **bit/s**. Typically
|
Note that the units are **Byte/s**, not **bit/s**. Typically
|
||||||
connections are measured in bit/s - to convert divide by 8. For
|
connections are measured in bit/s - to convert divide by 8. For
|
||||||
example, let's say you have a 10 Mbit/s connection and you wish rclone
|
example, let's say you have a 10 Mbit/s connection and you wish rclone
|
||||||
to use half of it - 5 Mbit/s. This is 5/8 = 0.625 MiByte/s so you would
|
to use half of it - 5 Mbit/s. This is 5/8 = 0.625 MiB/s so you would
|
||||||
use a `--bwlimit 0.625M` parameter for rclone.
|
use a `--bwlimit 0.625M` parameter for rclone.
|
||||||
|
|
||||||
On Unix systems (Linux, macOS, …) the bandwidth limiter can be toggled by
|
On Unix systems (Linux, macOS, …) the bandwidth limiter can be toggled by
|
||||||
|
@ -563,7 +563,7 @@ change the bwlimit dynamically:
|
||||||
This option controls per file bandwidth limit. For the options see the
|
This option controls per file bandwidth limit. For the options see the
|
||||||
`--bwlimit` flag.
|
`--bwlimit` flag.
|
||||||
|
|
||||||
For example use this to allow no transfers to be faster than 1 MiByte/s
|
For example use this to allow no transfers to be faster than 1 MiB/s
|
||||||
|
|
||||||
--bwlimit-file 1M
|
--bwlimit-file 1M
|
||||||
|
|
||||||
|
|
|
@ -1225,7 +1225,7 @@ Use the -i flag to see what would be copied before copying.
|
||||||
|
|
||||||
Drive has quite a lot of rate limiting. This causes rclone to be
|
Drive has quite a lot of rate limiting. This causes rclone to be
|
||||||
limited to transferring about 2 files per second only. Individual
|
limited to transferring about 2 files per second only. Individual
|
||||||
files may be transferred much faster at 100s of MiByte/s but lots of
|
files may be transferred much faster at 100s of MiB/s but lots of
|
||||||
small files can take a long time.
|
small files can take a long time.
|
||||||
|
|
||||||
Server side copies are also subject to a separate rate limit. If you
|
Server side copies are also subject to a separate rate limit. If you
|
||||||
|
|
|
@ -586,17 +586,17 @@ remote or flag value. The fix then is to quote values containing spaces.
|
||||||
### `--min-size` - Don't transfer any file smaller than this
|
### `--min-size` - Don't transfer any file smaller than this
|
||||||
|
|
||||||
Controls the minimum size file within the scope of an rclone command.
|
Controls the minimum size file within the scope of an rclone command.
|
||||||
Default units are `KiByte` but abbreviations `K`, `M`, `G`, `T` or `P` are valid.
|
Default units are `KiB` but abbreviations `K`, `M`, `G`, `T` or `P` are valid.
|
||||||
|
|
||||||
E.g. `rclone ls remote: --min-size 50k` lists files on `remote:` of 50 KiByte
|
E.g. `rclone ls remote: --min-size 50k` lists files on `remote:` of 50 KiB
|
||||||
size or larger.
|
size or larger.
|
||||||
|
|
||||||
### `--max-size` - Don't transfer any file larger than this
|
### `--max-size` - Don't transfer any file larger than this
|
||||||
|
|
||||||
Controls the maximum size file within the scope of an rclone command.
|
Controls the maximum size file within the scope of an rclone command.
|
||||||
Default units are `KiByte` but abbreviations `K`, `M`, `G`, `T` or `P` are valid.
|
Default units are `KiB` but abbreviations `K`, `M`, `G`, `T` or `P` are valid.
|
||||||
|
|
||||||
E.g. `rclone ls remote: --max-size 1G` lists files on `remote:` of 1 GiByte
|
E.g. `rclone ls remote: --max-size 1G` lists files on `remote:` of 1 GiB
|
||||||
size or smaller.
|
size or smaller.
|
||||||
|
|
||||||
### `--max-age` - Don't transfer any file older than this
|
### `--max-age` - Don't transfer any file older than this
|
||||||
|
@ -650,7 +650,7 @@ E.g. the scope of `rclone sync -i A: B:` can be restricted:
|
||||||
|
|
||||||
rclone --min-size 50k --delete-excluded sync A: B:
|
rclone --min-size 50k --delete-excluded sync A: B:
|
||||||
|
|
||||||
All files on `B:` which are less than 50 KiByte are deleted
|
All files on `B:` which are less than 50 KiB are deleted
|
||||||
because they are excluded from the rclone sync command.
|
because they are excluded from the rclone sync command.
|
||||||
|
|
||||||
### `--dump filters` - dump the filters to the output
|
### `--dump filters` - dump the filters to the output
|
||||||
|
|
|
@ -18,8 +18,8 @@ These flags are available for every command.
|
||||||
--backup-dir string Make backups into hierarchy based in DIR.
|
--backup-dir string Make backups into hierarchy based in DIR.
|
||||||
--bind string Local address to bind to for outgoing connections, IPv4, IPv6 or name.
|
--bind string Local address to bind to for outgoing connections, IPv4, IPv6 or name.
|
||||||
--buffer-size SizeSuffix In memory buffer size when reading files for each --transfer. (default 16Mi)
|
--buffer-size SizeSuffix In memory buffer size when reading files for each --transfer. (default 16Mi)
|
||||||
--bwlimit BwTimetable Bandwidth limit in KiByte/s, or use suffix B|K|M|G|T|P or a full timetable.
|
--bwlimit BwTimetable Bandwidth limit in KiB/s, or use suffix B|K|M|G|T|P or a full timetable.
|
||||||
--bwlimit-file BwTimetable Bandwidth limit per file in KiByte/s, or use suffix B|K|M|G|T|P or a full timetable.
|
--bwlimit-file BwTimetable Bandwidth limit per file in KiB/s, or use suffix B|K|M|G|T|P or a full timetable.
|
||||||
--ca-cert string CA certificate used to verify servers
|
--ca-cert string CA certificate used to verify servers
|
||||||
--cache-dir string Directory rclone will use for caching. (default "$HOME/.cache/rclone")
|
--cache-dir string Directory rclone will use for caching. (default "$HOME/.cache/rclone")
|
||||||
--check-first Do all the checks before starting transfers.
|
--check-first Do all the checks before starting transfers.
|
||||||
|
|
|
@ -390,9 +390,9 @@ func (s *StatsInfo) String() string {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _ = fmt.Fprintf(buf, "%s%11s / %s, %s, %s, ETA %s%s",
|
_, _ = fmt.Fprintf(buf, "%s%13s / %s, %s, %s, ETA %s%s",
|
||||||
dateString,
|
dateString,
|
||||||
fs.SizeSuffix(s.bytes),
|
fs.SizeSuffix(s.bytes).ByteUnit(),
|
||||||
fs.SizeSuffix(ts.totalBytes).ByteUnit(),
|
fs.SizeSuffix(ts.totalBytes).ByteUnit(),
|
||||||
percent(s.bytes, ts.totalBytes),
|
percent(s.bytes, ts.totalBytes),
|
||||||
displaySpeedString,
|
displaySpeedString,
|
||||||
|
|
|
@ -59,7 +59,7 @@ const defaultMaxBurstSize = 4 * 1024 * 1024 // must be bigger than the biggest r
|
||||||
func newEmptyTokenBucket(bandwidth fs.SizeSuffix) *rate.Limiter {
|
func newEmptyTokenBucket(bandwidth fs.SizeSuffix) *rate.Limiter {
|
||||||
// Relate maxBurstSize to bandwidth limit
|
// Relate maxBurstSize to bandwidth limit
|
||||||
// 4M gives 2.5 Gb/s on Windows
|
// 4M gives 2.5 Gb/s on Windows
|
||||||
// Use defaultMaxBurstSize up to 2GBit/s (256MByte/s) then scale
|
// Use defaultMaxBurstSize up to 2GBit/s (256MiB/s) then scale
|
||||||
maxBurstSize := (bandwidth * defaultMaxBurstSize) / (256 * 1024 * 1024)
|
maxBurstSize := (bandwidth * defaultMaxBurstSize) / (256 * 1024 * 1024)
|
||||||
if maxBurstSize < defaultMaxBurstSize {
|
if maxBurstSize < defaultMaxBurstSize {
|
||||||
maxBurstSize = defaultMaxBurstSize
|
maxBurstSize = defaultMaxBurstSize
|
||||||
|
@ -104,7 +104,7 @@ func (tb *tokenBucket) StartTokenBucket(ctx context.Context) {
|
||||||
tb.currLimit = ci.BwLimit.LimitAt(time.Now())
|
tb.currLimit = ci.BwLimit.LimitAt(time.Now())
|
||||||
if tb.currLimit.Bandwidth.IsSet() {
|
if tb.currLimit.Bandwidth.IsSet() {
|
||||||
tb.curr = newTokenBucket(tb.currLimit.Bandwidth)
|
tb.curr = newTokenBucket(tb.currLimit.Bandwidth)
|
||||||
fs.Infof(nil, "Starting bandwidth limiter at %vByte/s", &tb.currLimit.Bandwidth)
|
fs.Infof(nil, "Starting bandwidth limiter at %v Byte/s", &tb.currLimit.Bandwidth)
|
||||||
|
|
||||||
// Start the SIGUSR2 signal handler to toggle bandwidth.
|
// Start the SIGUSR2 signal handler to toggle bandwidth.
|
||||||
// This function does nothing in windows systems.
|
// This function does nothing in windows systems.
|
||||||
|
|
|
@ -97,8 +97,8 @@ func AddFlags(ci *fs.ConfigInfo, flagSet *pflag.FlagSet) {
|
||||||
flags.IntVarP(flagSet, &ci.StatsFileNameLength, "stats-file-name-length", "", ci.StatsFileNameLength, "Max file name length in stats. 0 for no limit")
|
flags.IntVarP(flagSet, &ci.StatsFileNameLength, "stats-file-name-length", "", ci.StatsFileNameLength, "Max file name length in stats. 0 for no limit")
|
||||||
flags.FVarP(flagSet, &ci.LogLevel, "log-level", "", "Log level DEBUG|INFO|NOTICE|ERROR")
|
flags.FVarP(flagSet, &ci.LogLevel, "log-level", "", "Log level DEBUG|INFO|NOTICE|ERROR")
|
||||||
flags.FVarP(flagSet, &ci.StatsLogLevel, "stats-log-level", "", "Log level to show --stats output DEBUG|INFO|NOTICE|ERROR")
|
flags.FVarP(flagSet, &ci.StatsLogLevel, "stats-log-level", "", "Log level to show --stats output DEBUG|INFO|NOTICE|ERROR")
|
||||||
flags.FVarP(flagSet, &ci.BwLimit, "bwlimit", "", "Bandwidth limit in KiByte/s, or use suffix B|K|M|G|T|P or a full timetable.")
|
flags.FVarP(flagSet, &ci.BwLimit, "bwlimit", "", "Bandwidth limit in KiB/s, or use suffix B|K|M|G|T|P or a full timetable.")
|
||||||
flags.FVarP(flagSet, &ci.BwLimitFile, "bwlimit-file", "", "Bandwidth limit per file in KiByte/s, or use suffix B|K|M|G|T|P or a full timetable.")
|
flags.FVarP(flagSet, &ci.BwLimitFile, "bwlimit-file", "", "Bandwidth limit per file in KiB/s, or use suffix B|K|M|G|T|P or a full timetable.")
|
||||||
flags.FVarP(flagSet, &ci.BufferSize, "buffer-size", "", "In memory buffer size when reading files for each --transfer.")
|
flags.FVarP(flagSet, &ci.BufferSize, "buffer-size", "", "In memory buffer size when reading files for each --transfer.")
|
||||||
flags.FVarP(flagSet, &ci.StreamingUploadCutoff, "streaming-upload-cutoff", "", "Cutoff for switching to chunked upload if file size is unknown. Upload starts after reaching cutoff or when file ends.")
|
flags.FVarP(flagSet, &ci.StreamingUploadCutoff, "streaming-upload-cutoff", "", "Cutoff for switching to chunked upload if file size is unknown. Upload starts after reaching cutoff or when file ends.")
|
||||||
flags.FVarP(flagSet, &ci.Dump, "dump", "", "List of items to dump from: "+fs.DumpFlagsList)
|
flags.FVarP(flagSet, &ci.Dump, "dump", "", "List of items to dump from: "+fs.DumpFlagsList)
|
||||||
|
|
|
@ -104,21 +104,11 @@ func (x SizeSuffix) BitRateUnit() string {
|
||||||
|
|
||||||
// ByteUnit turns SizeSuffix into a string with byte unit
|
// ByteUnit turns SizeSuffix into a string with byte unit
|
||||||
func (x SizeSuffix) ByteUnit() string {
|
func (x SizeSuffix) ByteUnit() string {
|
||||||
return x.unit("Byte")
|
return x.unit("B")
|
||||||
}
|
}
|
||||||
|
|
||||||
// ByteRateUnit turns SizeSuffix into a string with byte rate unit
|
// ByteRateUnit turns SizeSuffix into a string with byte rate unit
|
||||||
func (x SizeSuffix) ByteRateUnit() string {
|
func (x SizeSuffix) ByteRateUnit() string {
|
||||||
return x.unit("Byte/s")
|
|
||||||
}
|
|
||||||
|
|
||||||
// ByteShortUnit turns SizeSuffix into a string with byte unit short form
|
|
||||||
func (x SizeSuffix) ByteShortUnit() string {
|
|
||||||
return x.unit("B")
|
|
||||||
}
|
|
||||||
|
|
||||||
// ByteRateShortUnit turns SizeSuffix into a string with byte rate unit short form
|
|
||||||
func (x SizeSuffix) ByteRateShortUnit() string {
|
|
||||||
return x.unit("B/s")
|
return x.unit("B/s")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ func TestSizeSuffixString(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSizeSuffixByteShortUnit(t *testing.T) {
|
func TestSizeSuffixByteUnit(t *testing.T) {
|
||||||
for _, test := range []struct {
|
for _, test := range []struct {
|
||||||
in float64
|
in float64
|
||||||
want string
|
want string
|
||||||
|
@ -58,30 +58,6 @@ func TestSizeSuffixByteShortUnit(t *testing.T) {
|
||||||
{1 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024, "1 EiB"},
|
{1 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024, "1 EiB"},
|
||||||
{-1, "off"},
|
{-1, "off"},
|
||||||
{-100, "off"},
|
{-100, "off"},
|
||||||
} {
|
|
||||||
ss := SizeSuffix(test.in)
|
|
||||||
got := ss.ByteShortUnit()
|
|
||||||
assert.Equal(t, test.want, got)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSizeSuffixByteUnit(t *testing.T) {
|
|
||||||
for _, test := range []struct {
|
|
||||||
in float64
|
|
||||||
want string
|
|
||||||
}{
|
|
||||||
{0, "0 Byte"},
|
|
||||||
{102, "102 Byte"},
|
|
||||||
{1024, "1 KiByte"},
|
|
||||||
{1024 * 1024, "1 MiByte"},
|
|
||||||
{1024 * 1024 * 1024, "1 GiByte"},
|
|
||||||
{10 * 1024 * 1024 * 1024, "10 GiByte"},
|
|
||||||
{10.1 * 1024 * 1024 * 1024, "10.100 GiByte"},
|
|
||||||
{10 * 1024 * 1024 * 1024 * 1024, "10 TiByte"},
|
|
||||||
{10 * 1024 * 1024 * 1024 * 1024 * 1024, "10 PiByte"},
|
|
||||||
{1 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024, "1 EiByte"},
|
|
||||||
{-1, "off"},
|
|
||||||
{-100, "off"},
|
|
||||||
} {
|
} {
|
||||||
ss := SizeSuffix(test.in)
|
ss := SizeSuffix(test.in)
|
||||||
got := ss.ByteUnit()
|
got := ss.ByteUnit()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user