【问题标题】:Trickle FTP connection涓流 FTP 连接
【发布时间】:2018-12-11 09:53:39
【问题描述】:

我有一个用于备份数据的脚本。最后一行是:

echo "$FTPConnectstring
$FTPCommands
bye" | ftp -ivn

效果很好,但我希望我能“涓涓细流”(即限制上传带宽使用)。 我尝试了很多这样的命令行:

echo "$FTPConnectstring
$FTPCommands
bye" | ftp -ivn | trickle -s -u 4096

但 ftp 传输似乎在没有 BW 使用限制的情况下执行 我也尝试过这样的事情

FinalCommand=$(echo -e "$FTPConnectstring\n$FTPCommands\nbye")
trickle -s -u 4096 ftp -ivn ${FinalCommand}

但是这个没有正确连接ftp...

任何帮助表示赞赏!

【问题讨论】:

  • 正确的语法类似于echo -e "$FTPConnectstring\n$FTPCommands\nbye" | trickle -s -u 4096 ftp -ivn,但如果ftp 是静态链接的,这可能不会达到您的预期。
  • 感谢您的评论。我应该明白我想要实现的目标是不可能的吗?
  • 如果它不起作用,请尝试使用不同的 FTP 客户端,例如 ncftp,它应该也更容易编写脚本。如果您正在运行守护程序,也许可以尝试省略 -s 选项。
  • 仅供参考:ldd $(which ftp) | grep libc.so 返回 libc.so.6 => /lib64/libc.so.6... 正如预期的那样处理涓流。我尝试了你的建议,结果是一样的,没有应用 BW 限制...

标签: bash ftp trickle


【解决方案1】:

在您的第一次尝试中,您只有trickle 来自ftp 的标准输出(取决于实现,可能只是进度消息,如果有的话)。在您的第二次尝试中,您遇到了语法错误; ftp 的参数应该是主机名,而不是命令序列。试试这个:

echo -e "$FTPConnectstring\n$FTPCommands\nbye" |
trickle -s -u 4096 ftp -ivn

如果ftp 二进制文件是静态链接的,trickle 不能覆盖其套接字处理内部;但在这种情况下,您可能可以切换到不同的 FTP 客户端,例如 ncftp,它也应该在脚本中表现得更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2020-06-13
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多