FrontPage 

Fuego 1.0 wiki

Login or create account

Transport notes in split format

This page has some random notes about the fuego transport functions.
{{TableOfContents}}
This page has some random notes about the fuego transport functions.
These are implemented in base-board.fuegoclass.
These are implemented in base-board.fuegoclass.
This page describes some of the issues related to these functions.
This page describes some of the issues related to these functions.
ssh and scp, adb, serio and ttc are candidates for tools that fuego can use for transport operations. Each of these has peculiarities that are worth describing.
ssh and scp, adb, serio and ttc are candidates for tools that fuego can use for
transport operations.  Each of these has peculiarities that are worth 
describing.
scp supports a -r option to use recursion with a set of files and directories.
scp supports a -r option to use recursion with a set of files and directories.
scp supports transferring more than one file at a time to a single destination directory * that is, you can do this: scp foo bar target:/tmp * can you also do this: scp target:foo target:bar /tmp (this is never done by fuego)
scp supports transferring more than one file at a time to a single destination directory
 * that is, you can do this: scp foo bar target:/tmp
 * can you also do this: scp target:foo target:bar /tmp (this is never done by fuego)

table of sub-tool features [edit section]

= table of sub-tool features =
ssh, adb, serio and ttc are candidates for tools that fuego can use for
transport operations.
Here is a table of sub-tool features: {{{#!Table ||tool and command||supports directory recursion||uses -r||supports multiple sources||supports target wildcards|| ||scp ||yes ||yes ||yes ||yes|| ||ttc ||depends on wrapped command||can pass it through to sub-command||yes||depends on wrapped command|| ||serio -g ||no ||no ||no ||no|| ||serio -p ||no ||no ||no ||no|| ||adb pull ||yes ||no ||yes? ||?|| ||adb push ||yes ||no ||no ||no||
Here is a table of sub-tool features:
{{{#!Table
||tool and command||supports directory recursion||uses -r||supports multiple sources||supports target wildcards||
||scp             ||yes                         ||yes    ||yes                      ||yes||
||ttc             ||depends on wrapped command||can pass it through to sub-command||yes||depends on wrapped command||
||serio -g        ||no                          ||no     ||no                       ||no||
||serio -p        ||no                          ||no     ||no                       ||no||
||adb pull        ||yes                         ||no     ||yes?                     ||?||
||adb push        ||yes                         ||no     ||no                       ||no||
}}}
}}}

places where 'get' is called [edit section]

= places where 'get' is called =
in the system:
 * functions.sh - in post_test, to get syslogs.
   * get /tmp/fuego.${1}/*.${BUILD_ID}.* $FUEGO_LOGS_PATH/${JOB_NAME}/systemlogs/
     * uses wildcards, but not recursion (gets both .before and .after log)
     * uses wildcard to avoid having to reference full log name and build number (and suffix: 'before' or 'after')
     * dump_syslogs -> ov_rootfs_logread is used to create the syslogs
       * filename is: ${NODE_NAME}.${BUILD_ID}.${BUILD_NUMBER}.$2
       * where $2 is 'before' or 'after'
   * changed to:
     * get /tmp/fuego.${1}/${NODE_NAME}.${BUILD_ID}.${BUILD_NUMBER}.before $FUEGO_LOGS_PATH/${JOB_NAME}/systemlogs/
     * get /tmp/fuego.${1}/${NODE_NAME}.${BUILD_ID}.${BUILD_NUMBER}.after $FUEGO_LOGS_PATH/${JOB_NAME}/systemlogs/
 * functions.sh - in get_testlog, to get the test log
   * get ${2} $FUEGO_LOGS_PATH/${JOB_NAME}/testlogs/${NODE_NAME}.${BUILD_ID}.${BUILD_NUMBER}.log
in test scripts: * 'get' is not used in any tests scripts currently
in test scripts:
 * 'get' is not used in any tests scripts currently

places where 'put' is called [edit section]

= places where 'put' is called =
in the system:
 * 'put' is not used by the system
in test scripts: * {{{#!Table sortby=script:alpha show_edit_links=0 ||test ||script ||command ||uses -r?||uses wildcard||use multiple sources|| ||Functional.hello_world ||hello_world.sh ||put hello $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.netpipe ||NetPIPE.sh ||put NPtcp $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Functional.aiostress ||aiostress.sh ||put aiostress $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.cyclictest ||cyclictest.sh ||put cyclictest $FUEGO_HOME/fuego.$TESTDIR/||no||no||no|| ||Benchmark.aim7 ||aim7.sh ||put src/reaim $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.aim7 ||aim7.sh ||put -r data $FUEGO_HOME/fuego.$TESTDIR/ ||yes||no||no|| ||Benchmark.aim7 ||aim7.sh ||put -r scripts $FUEGO_HOME/fuego.$TESTDIR/||yes||no||no|| ||Benchmark.reboot ||reboot.sh ||put $TEST_HOME/$tarball $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Functional.jpeg ||jpeg.sh ||put run-tests.sh test* djpeg cjpeg jpegtran $FUEGO_HOME/fuego.$TESTDIR/;||no||yes||yes|| ||Benchmark.tiobench ||tiobench.sh ||put tiotest $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Functional.scifab ||scifab.sh ||put -r ./* $OSV_HOME/osv.$TESTDIR/ ||yes||yes||no|| ||Benchmark.bonnie ||bonnie++.sh ||put bonnie++ $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.Stream ||stream.sh ||put stream_c.exe $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes|| ||Benchmark.ebizzy ||ebizzy.sh ||put ebizzy $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.dbench ||dbench.sh ||put dbench client.txt $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes|| ||Functional.bzip2 ||bzip2.sh ||put {sample*,run-tests.sh} $FUEGO_HOME/fuego.$TESTDIR/||no||yes||yes?|| ||Benchmark.blobsallad ||blobsallad.sh ||put blobsallad $FUEGO_HOME/fuego.$TESTDIR/||no||no||no|| ||Benchmark.blobsallad ||blobsallad.sh ||put -r maps $FUEGO_HOME/fuego.$TESTDIR/ ||yes||no||no|| ||Functional.synctest ||synctest.sh ||put synctest $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.hackbench ||hackbench.sh ||put hackbench $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Functional.posixtestsuite||posixtestsuite.sh||put -r ./* $FUEGO_HOME/fuego.$TESTDIR/ ||yes||yes||no|| ||Benchmark.fio ||fio.sh ||put fio examples/fsx-current examples/ssd-test-current $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes|| ||OpenSSL ||openssl.sh ||put -r apps util test run-tests.sh $FUEGO_HOME/fuego.$TESTDIR/||yes||no||yes|| ||Benchmark.ffsb ||ffsb.sh ||put ffsb $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.ffsb ||ffsb.sh ||put examples/profile_everything $FUEGO_HOME/fuego.$TESTDIR/||no||no||no|| ||Functional.zlib ||zlib.sh ||put example minigzip $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes|| ||Functional.scrashme ||scrashme.sh ||put scrashme $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.x11perf ||x11perf.sh ||put x11perf $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||LTP ||ltp.sh ||put -r testcases/kernel/device-drivers/rtc/rtc01 $FUEGO_HOME/fuego.$TESTDIR/||yes||no||no|| ||LTP ||ltp.sh ||put -r fs_tests/* $FUEGO_HOME/fuego.$TESTDIR/||yes||yes||no|| ||LTP ||ltp.sh ||put -r target_bin /tmp/fuego.$TESTDIR/ ||yes||no||no|| ||Benchmark.nbench-byte ||nbench-byte.sh ||put hardware nbench sysinfo.sh *.DAT $FUEGO_HOME/fuego.$TESTDIR/||no||yes||yes|| ||Functional.cmt ||cmt.sh ||put -r ./* $FUEGO_HOME/fuego.$TESTDIR/ ||yes||yes||no|| ||Functional.ft2demos ||ft2demos.sh ||put ${tarball%.tar*}/bin/.libs/* $FUEGO_HOME/fuego.$TESTDIR/||no||yes||no|| ||Functional.ipv6connect ||ipv6connect.sh ||put ipv6connect $FUEGO_HOME/fuego.$TESTDIR/||no||no||no|| ||Benchmark.Dhrystone ||Dhrystone.sh ||put dhrystone $FUEGO_HOME/fuego.$TESTDIR/ | | return 1 *||no||no||no|| ||Functional.bc ||bc-script.sh ||put bc-device.sh $FUEGO_HOME/fuego.$TESTDIR/||no||no||no|| ||Benchmark.signaltest ||signaltest.sh ||put signaltest $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||netperf ||netperf.sh ||put *script $FUEGO_HOME/fuego.$TESTDIR/ ||no||yes||no|| ||netperf ||netperf.sh ||put netperf $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Functional.expat ||expat.sh ||put -r XML-Test-Suite.tar tests/.libs/* tests/xmltest.sh $FUEGO_HOME/fuego.$TESTDIR/;||yes||yes||yes|| ||Functional.expat ||expat.sh ||put xmlwf/.libs/xmlwf $FUEGO_HOME/xmlwf/xmlwf;||no||no||no|| ||Functional.glib ||glib2.sh ||put gio/tests/Makefile.am `find . -name .libs | xargs -IDIRS find DIRS -not -type d -not -name '*.so*' -not -name '*.la*' -perm /u+x` $FUEGO_HOME/fuego.$TESTDIR/||no||no!||yes|| ||Benchmark.lmbench2 ||lmbench.sh ||put -r * $FUEGO_HOME/fuego.$TESTDIR/ ||yes||yes||no|| ||Benchmark.himeno ||himeno.sh ||put bmt $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Functional.sdhi_0 ||sdhi_0.sh ||put -r ./* $OSV_HOME/osv.$TESTDIR/ ||yes||yes||no|| ||Functional.fontconfig ||fontconfig.sh ||put -r test/* $FUEGO_HOME/fuego.$TESTDIR/ ||yes||yes||no|| ||Benchmark.IOzone ||iozone.sh ||put fileop iozone pit_server $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes|| ||Benchmark.nbench_byte ||nbench_byte.sh ||put hardware nbench sysinfo.sh *.DAT $FUEGO_HOME/fuego.$TESTDIR/||no||yes||yes|| ||Benchmark.linpack ||linpack.sh ||put linpack $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Functional.arch_timer ||arch_timer.sh ||put -r ./* $FUEGO_HOME/fuego.$TESTDIR/ ||yes||yes||no|| ||Benchmark.iperf ||iperf.sh ||put src/iperf $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Functional.pi_tests ||pi_tests.sh ||put ./pi_stress $FUEGO_HOME/fuego.$TESTDIR/||no||no||no|| ||Benchmark.Java ||java_perf.sh ||put *.jar $FUEGO_HOME/fuego.$TESTDIR/ ||no||yes||no|| ||Functional.rmaptest ||rmaptest.sh ||put rmap-test $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.Interbench ||interbench.sh ||put interbench $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.GLMark ||GLMark.sh ||put -r glmark data $FUEGO_HOME/fuego.$TESTDIR/||yes||no||no|| ||Functional.linus_stress ||linus_stress.sh||put linus_stress $FUEGO_HOME/fuego.$TESTDIR/||no||no||no|| ||Benchmark.gtkperf ||gtkperf.sh ||put src/gtkperf $FUEGO_HOME/fuego.$TESTDIR/||no||no||no|| ||Benchmark.gtkperf ||gtkperf.sh ||put pixmaps/*.png $FUEGO_HOME/fuego.$TESTDIR/share/pixmaps||no||yes||no|| ||Functional.stress ||stress.sh ||put src/stress $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Functional.crashme ||crashme.sh ||put crashme $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| ||Benchmark.Whetstone ||Whetstone.sh ||put whetstone $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no|| }}}
in test scripts:
 *
{{{#!Table
sortby=script:alpha
show_edit_links=0
||test                     ||script         ||command                                    ||uses -r?||uses wildcard||use multiple sources||
||Functional.hello_world   ||hello_world.sh ||put hello  $FUEGO_HOME/fuego.$TESTDIR/     ||no||no||no||
||Benchmark.netpipe        ||NetPIPE.sh     ||put NPtcp  $FUEGO_HOME/fuego.$TESTDIR/     ||no||no||no||
||Functional.aiostress     ||aiostress.sh   ||put aiostress  $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no||
||Benchmark.cyclictest     ||cyclictest.sh  ||put cyclictest  $FUEGO_HOME/fuego.$TESTDIR/||no||no||no||
||Benchmark.aim7           ||aim7.sh        ||put src/reaim  $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no||
||Benchmark.aim7           ||aim7.sh        ||put -r data  $FUEGO_HOME/fuego.$TESTDIR/   ||yes||no||no||
||Benchmark.aim7           ||aim7.sh        ||put -r scripts  $FUEGO_HOME/fuego.$TESTDIR/||yes||no||no||
||Benchmark.reboot         ||reboot.sh      ||put $TEST_HOME/$tarball  $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no||
||Functional.jpeg          ||jpeg.sh        ||put run-tests.sh test* djpeg cjpeg jpegtran  $FUEGO_HOME/fuego.$TESTDIR/;||no||yes||yes||
||Benchmark.tiobench       ||tiobench.sh    ||put tiotest  $FUEGO_HOME/fuego.$TESTDIR/   ||no||no||no||
||Functional.scifab        ||scifab.sh      ||put -r ./* $OSV_HOME/osv.$TESTDIR/         ||yes||yes||no||
||Benchmark.bonnie         ||bonnie++.sh    ||put bonnie++  $FUEGO_HOME/fuego.$TESTDIR/  ||no||no||no||
||Benchmark.Stream         ||stream.sh      ||put stream_c.exe  $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes||
||Benchmark.ebizzy         ||ebizzy.sh      ||put ebizzy  $FUEGO_HOME/fuego.$TESTDIR/    ||no||no||no||
||Benchmark.dbench         ||dbench.sh      ||put dbench client.txt $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes|| 
||Functional.bzip2         ||bzip2.sh       ||put {sample*,run-tests.sh}  $FUEGO_HOME/fuego.$TESTDIR/||no||yes||yes?||
||Benchmark.blobsallad     ||blobsallad.sh  ||put blobsallad  $FUEGO_HOME/fuego.$TESTDIR/||no||no||no||
||Benchmark.blobsallad     ||blobsallad.sh  ||put -r maps  $FUEGO_HOME/fuego.$TESTDIR/   ||yes||no||no||
||Functional.synctest      ||synctest.sh    ||put synctest  $FUEGO_HOME/fuego.$TESTDIR/  ||no||no||no||
||Benchmark.hackbench      ||hackbench.sh   ||put hackbench  $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no||
||Functional.posixtestsuite||posixtestsuite.sh||put -r ./*  $FUEGO_HOME/fuego.$TESTDIR/  ||yes||yes||no||
||Benchmark.fio            ||fio.sh         ||put fio examples/fsx-current examples/ssd-test-current  $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes||
||OpenSSL                  ||openssl.sh     ||put -r apps util test run-tests.sh  $FUEGO_HOME/fuego.$TESTDIR/||yes||no||yes||
||Benchmark.ffsb           ||ffsb.sh        ||put ffsb  $FUEGO_HOME/fuego.$TESTDIR/      ||no||no||no||
||Benchmark.ffsb           ||ffsb.sh        ||put examples/profile_everything  $FUEGO_HOME/fuego.$TESTDIR/||no||no||no||
||Functional.zlib          ||zlib.sh        ||put example minigzip  $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes||
||Functional.scrashme      ||scrashme.sh    ||put scrashme  $FUEGO_HOME/fuego.$TESTDIR/  ||no||no||no||
||Benchmark.x11perf        ||x11perf.sh     ||put x11perf  $FUEGO_HOME/fuego.$TESTDIR/   ||no||no||no||
||LTP                      ||ltp.sh         ||put -r testcases/kernel/device-drivers/rtc/rtc01  $FUEGO_HOME/fuego.$TESTDIR/||yes||no||no||
||LTP                      ||ltp.sh         ||put -r fs_tests/*  $FUEGO_HOME/fuego.$TESTDIR/||yes||yes||no||
||LTP                      ||ltp.sh         ||put -r target_bin  /tmp/fuego.$TESTDIR/    ||yes||no||no||
||Benchmark.nbench-byte    ||nbench-byte.sh ||put hardware nbench sysinfo.sh *.DAT  $FUEGO_HOME/fuego.$TESTDIR/||no||yes||yes||
||Functional.cmt           ||cmt.sh         ||put -r ./* $FUEGO_HOME/fuego.$TESTDIR/     ||yes||yes||no||
||Functional.ft2demos      ||ft2demos.sh    ||put ${tarball%.tar*}/bin/.libs/*  $FUEGO_HOME/fuego.$TESTDIR/||no||yes||no||
||Functional.ipv6connect   ||ipv6connect.sh ||put ipv6connect  $FUEGO_HOME/fuego.$TESTDIR/||no||no||no||
||Benchmark.Dhrystone      ||Dhrystone.sh   ||put dhrystone  $FUEGO_HOME/fuego.$TESTDIR/ | | return 1 *||no||no||no||
||Functional.bc            ||bc-script.sh   ||put bc-device.sh  $FUEGO_HOME/fuego.$TESTDIR/||no||no||no||
||Benchmark.signaltest     ||signaltest.sh  ||put signaltest  $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no||
||netperf                  ||netperf.sh     ||put *script  $FUEGO_HOME/fuego.$TESTDIR/    ||no||yes||no||
||netperf                  ||netperf.sh     ||put netperf  $FUEGO_HOME/fuego.$TESTDIR/    ||no||no||no||
||Functional.expat         ||expat.sh       ||put -r XML-Test-Suite.tar tests/.libs/* tests/xmltest.sh  $FUEGO_HOME/fuego.$TESTDIR/;||yes||yes||yes||
||Functional.expat         ||expat.sh       ||put xmlwf/.libs/xmlwf  $FUEGO_HOME/xmlwf/xmlwf;||no||no||no||
||Functional.glib          ||glib2.sh       ||put gio/tests/Makefile.am `find . -name .libs | xargs -IDIRS find DIRS -not -type d -not -name '*.so*' -not -name '*.la*' -perm /u+x`  $FUEGO_HOME/fuego.$TESTDIR/||no||no!||yes||
||Benchmark.lmbench2       ||lmbench.sh     ||put -r *  $FUEGO_HOME/fuego.$TESTDIR/       ||yes||yes||no||
||Benchmark.himeno         ||himeno.sh      ||put bmt  $FUEGO_HOME/fuego.$TESTDIR/        ||no||no||no||
||Functional.sdhi_0        ||sdhi_0.sh      ||put -r ./* $OSV_HOME/osv.$TESTDIR/          ||yes||yes||no||
||Functional.fontconfig    ||fontconfig.sh  ||put -r test/*  $FUEGO_HOME/fuego.$TESTDIR/  ||yes||yes||no||
||Benchmark.IOzone         ||iozone.sh      ||put fileop iozone pit_server  $FUEGO_HOME/fuego.$TESTDIR/||no||no||yes||
||Benchmark.nbench_byte    ||nbench_byte.sh ||put hardware nbench sysinfo.sh *.DAT  $FUEGO_HOME/fuego.$TESTDIR/||no||yes||yes||
||Benchmark.linpack        ||linpack.sh     ||put linpack  $FUEGO_HOME/fuego.$TESTDIR/    ||no||no||no||
||Functional.arch_timer    ||arch_timer.sh  ||put -r ./* $FUEGO_HOME/fuego.$TESTDIR/      ||yes||yes||no||
||Benchmark.iperf          ||iperf.sh       ||put src/iperf  $FUEGO_HOME/fuego.$TESTDIR/  ||no||no||no||
||Functional.pi_tests      ||pi_tests.sh    ||put ./pi_stress  $FUEGO_HOME/fuego.$TESTDIR/||no||no||no||
||Benchmark.Java           ||java_perf.sh   ||put *.jar  $FUEGO_HOME/fuego.$TESTDIR/      ||no||yes||no||
||Functional.rmaptest      ||rmaptest.sh    ||put rmap-test  $FUEGO_HOME/fuego.$TESTDIR/  ||no||no||no||
||Benchmark.Interbench     ||interbench.sh  ||put interbench  $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no||
||Benchmark.GLMark         ||GLMark.sh      ||put -r glmark data  $FUEGO_HOME/fuego.$TESTDIR/||yes||no||no||
||Functional.linus_stress  ||linus_stress.sh||put linus_stress  $FUEGO_HOME/fuego.$TESTDIR/||no||no||no||
||Benchmark.gtkperf        ||gtkperf.sh     ||put src/gtkperf  $FUEGO_HOME/fuego.$TESTDIR/||no||no||no||
||Benchmark.gtkperf        ||gtkperf.sh     ||put pixmaps/*.png  $FUEGO_HOME/fuego.$TESTDIR/share/pixmaps||no||yes||no||
||Functional.stress        ||stress.sh      ||put src/stress  $FUEGO_HOME/fuego.$TESTDIR/ ||no||no||no||
||Functional.crashme       ||crashme.sh     ||put crashme  $FUEGO_HOME/fuego.$TESTDIR/    ||no||no||no||
||Benchmark.Whetstone      ||Whetstone.sh   ||put whetstone  $FUEGO_HOME/fuego.$TESTDIR/  ||no||no||no||
}}}
Notes: * Dhrystone has '|| return 1' - is this needed? * glib2 has a find|xargs command in the put parameters, for crying out loud! * only expat and gtkperf put anything outside of $FUEGO_HOME/fuego.$TESTDIR
Notes:
 * Dhrystone has '|| return 1' - is this needed?
 * glib2 has a find|xargs command in the put parameters, for crying out loud!
 * only expat and gtkperf put anything outside of $FUEGO_HOME/fuego.$TESTDIR

rules [edit section]

= rules =
Here is a list of rules regarding use of 'get' and 'put' in Fuego:
  • get only ever specifies: * a single file on the target as the source * a single directory on the host as the destination * get never takes wildcards * get never takes multiple files
 * get only ever specifies:
   * a single file on the target as the source
   * a single directory on the host as the destination
 * get never takes wildcards
 * get never takes multiple files
  • put can take a leading '-r' argument, which means to recurse directories * if -r is used, it must be the first argument to 'put' * put can take wildcards on the host for sources * put can take multiple files and directories on the host for sources * put always takes a single directory on the target as the destination
 * put can take a leading '-r' argument, which means to recurse directories
   * if -r is used, it must be the first argument to 'put'
 * put can take wildcards on the host for sources
 * put can take multiple files and directories on the host for sources
 * put always takes a single directory on the target as the destination
TBWiki engine 1.8.3 by Tim Bird