在命令行和/或文件管理器(例如 nautilus)上,我们如何设置数据传输/复制速度的上限?
cp
我在或的手册上没有找到任何内容mv
。我想知道这一点,因为我在将文件放入 4 级 MicroSD 卡时遇到了问题。传输少量文件没问题,但当我放入大量文件(例如 100 个文件,总计 10 GB)时,会出现“输入/输出错误”,然后 SD 卡被锁定,我无法删除或对其进行任何操作。设置传输速度可能会解决这个问题。
答案1
答案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 进行操作的方法。
相关项目:魔法虫洞:安全地将数据从一台计算机传输到另一台计算机。