当你使用
rsync -avzh --stats --out-format="%t %f %b"
它以字节为单位输出,手册页说明如下
In addition, one or more apostrophes may be specified prior to a
numerical escape to indicate that the numerical value should be made
more human-readable. The 3 supported levels are the same as for the
--human-readable command-line option, though the default is for human-
readability to be off. Each added apostrophe increases the level
(e.g. "%''l %'b %f").
我的问题是,我必须在 %b 之间放置多少个撇号才能将其从字节更改为兆字节?
一旦我添加撇号,日志中就会发生这种情况
rsync -av --out-format="%t %f %'b"
2016/10/29 01:00:22 home/data/Clients/P/Power Solutions CC/2017/Sales Report %'b
我已经输入了不复制 html 的命令,但似乎无法正确显示日志
答案1
阅读--human-readable
手册页的部分内容可以发现
-h, --人类可读
以更人性化的方式输出数字。这样,大数字输出时会使用更大的单位,并带有 K、M 或 G 后缀。如果指定了此选项一次,则这些单位为 K (1000)、M (1000*1000) 和 G (1000*1000*1000);如果重复指定此选项,则单位为 1024 的幂,而不是 1000。
然而,这不是特别清楚,所以让我们科学的方法承担并设计一个实验。我们将使用一些我们手边的文件并使用 rsync 复制它们。我们将记录它为每个不同的命令行选项生成的相关输出。
以下是我们将用于进行实验的文件。
ls -lh test.*
-rw-rw-r--. 1 iain iain 40435 Oct 31 09:08 test.png
-rw-rw-r--. 1 iain iain 853483520 Oct 31 09:08 test.tar
然后我们将使用 rsync 来复制它们。请注意,我们每次都会删除目标文件,但不显示我们的工作。
测试 1
rsync -av --out-format="%t %f %b" ./test.* /tmp/
sending incremental file list
2016/10/31 09:10:42 test.png 40482
2016/10/31 09:10:45 test.tar 853587747
所以%b
给出一个简单的字节值
测试 2
rsync -av --out-format="%t %f %'b" ./test.tar /tmp/
sending incremental file list
2016/10/31 09:11:25 test.png 40,482
2016/10/31 09:11:28 test.tar 853,587,747
%'b
给出一个字节值,以,
测试 3
rsync -av --out-format="%t %f %''b" ./test.* /tmp/
sending incremental file list
2016/10/31 09:12:29 test.png 40.48K
2016/10/31 09:12:32 test.tar 853.59M
%''b
给出适当缩放的 KB/MB(和 GB)大小
最后
测试 4
rsync -av --out-format="%t %f %'''b" ./test* /tmp/
sending incremental file list
2016/10/31 09:17:49 test.png 39.53K
2016/10/31 09:17:52 test.tar 814.04M
%'''b
给定 KiB/MiB 等的值也适当缩放。
结论
如果您希望一切都以 MB 来表达,那么您就无法做到您想做的,因为输出会根据文件的需要缩放为 K/M/G 等。
如果您想要 K/M/G 等,那么就是 B ''
;如果您想要 KiB/MiB/GiB 等,那么'''
就是您想要的。
所以你的问题的答案是,这取决于你的意思
将其从字节更改为兆字节