设置数据传输/复制速度限制

设置数据传输/复制速度限制

在命令行和/或文件管理器(例如 nautilus)上,我们如何设置数据传输/复制速度的上限?

cp我在或的手册上没有找到任何内容mv。我想知道这一点,因为我在将文件放入 4 级 MicroSD 卡时遇到了问题。传输少量文件没问题,但当我放入大量文件(例如 100 个文件,总计 10 GB)时,会出现“输入/输出错误”,然后 SD 卡被锁定,我无法删除或对其进行任何操作。设置传输速度可能会解决这个问题。

答案1

我认为scp -l 500 original /some/destination/这也许是你最好的选择。
其中:

  • -l限制使用的带宽,以 Kbit/s 为单位。

手册页

答案2

scp -l在 Xubuntu 20.04 上它对我来说不起作用,它只是在从 SD 卡复制到 SD 卡时以最大速度写入。

对我有用的是rsync --bwlimit NNN,NNN=kilo字节每秒。

我认为该限制适用于整个传输过程的平均速率,如果您使用 来查看,则此处或彼处的个别文件可能会超出该限制--progress

答案3

您可以通过pv-L

-L RATE, --rate-limit RATE:限制传输速度为每秒最多 RATE 个字节。可以添加“k”、“m”、“g”或“t”后缀来表示千字节 (*1024)、兆字节等。

更多信息这里. 有些人还提到trickle(用户空间带宽整形器)。

然后,正如提到的这里:如果您需要通过一个(或多个)代理服务器,OpenSSH v7.3 及以上版本支持-J

考虑 A → B → C,在 hostA 上,只需:

tar cf - file1 file_n | pv | ssh -C -J userB@hostB:portB userB@hostC -p portC 'tar xvf - -C hostC_destination_folder'
  • 使用 ssh 选项时可以使用任意数量的跳数-J
  • 省略 tar 的远程-C以将文件留在主文件夹中。
  • 立即发送任何文件(文本或二进制)。
  • 使用 ssh -C(或 tar -z) 压缩数据流来提高速度。如果数据是纯文本 (未压缩),则特别有用。
  • pv监控管道中数据的传输进度。另一种方法是progress

灵感来自弗洛里安·菲达Dan Garthwaite 的答案。

这里使用 Midnight Commander 进行操作的方法。

相关项目魔法虫洞安全地将数据从一台计算机传输到另一台计算机。

相关内容