You can use put
for that as well (at least in 1.0.0):
local_path
may be a relative or absolute local file or directory path, and may contain shell-style wildcards, as understood by the Python glob module. Tilde expansion (as implemented by os.path.expanduser) is also performed.
See: http://docs.fabfile.org/en/1.0.0/api/core/operations.html#fabric.operations.put
Update: This example works fine (for me) on 1.0.0.:
from fabric.api import env
from fabric.operations import run, put
env.hosts = ['frodo@middleearth.com']
def copy():
# make sure the directory is there!
run('mkdir -p /home/frodo/tmp')
# our local 'testdirectory' - it may contain files or subdirectories ...
put('testdirectory', '/home/frodo/tmp')
# [frodo@middleearth.com] Executing task 'copy'
# [frodo@middleearth.com] run: mkdir -p /home/frodo/tmp
# [frodo@middleearth.com] put: testdirectory/HELLO -> \
# /home/frodo/tmp/testdirectory/HELLO
# [frodo@middleearth.com] put: testdirectory/WORLD -> \
# /home/frodo/tmp/testdirectory/WORLD
# ...