2010-11-08 22 views
4

我正在尝试创建一个使用--progress参数调用rsync脚本的macruby应用程序,但rsync显示其进度的方式是通过更改同一行,而不是将新行添加到其输出,因此如何获取这个数据?如何从ruby获得交互式程序的进度?

+1

问题是rsync写入同一行,我想了一个办法,基于这个http://coderrr.wordpress.com/2008/10/21/when-to-use-readpartial-instead-of- read-in-ruby /使用IO.popen readpartial获取部分数据。 – 2010-12-15 16:33:12

回答

3

的Rsync可以让你改变的信息的格式使用--log-format选项显示:

--log-format=FORMAT 
     This allows you to specify exactly what the rsync client outputs to the user on a per-file basis. The format is a text string containing embedded 
     single-character escape sequences prefixed with a percent (%) character. For a list of the possible escape characters, see the "log format" set- 
     ting in the rsyncd.conf manpage. (Note that this option does not affect what a daemon logs to its logfile.) 

     Specifying this option will mention each file, dir, etc. that gets updated in a significant way (a transferred file, a recreated symlink/device, 
     or a touched directory) unless the itemize-changes escape (%i) is included in the string, in which case the logging of names increases to mention 
     any item that is changed in any way (as long as the receiving side is at least 2.6.4). See the --itemize-changes option for a description of the 
     output of "%i". 

     The --verbose option implies a format of "%n%L", but you can use --log-format without --verbose if you like, or you can override the format of its 
     per-file output using this option. 

     Rsync will output the log-format string prior to a file's transfer unless one of the transfer-statistic escapes is requested, in which case the 
     logging is done at the end of the file's transfer. When this late logging is in effect and --progress is also specified, rsync will also output 
     the name of the file being transferred prior to its progress information (followed, of course, by the log-format output). 

你应该能够在飞行到的东西进行配置更可用。

另外,如果您使用popen3,则应该能够捕获转移百分比数字,并使用它创建自己的进度栏。

相关问题