sftp_py is a Python package for transferring files between remote and local directories using the paramiko sftp client. After transfer, downloaded/uploaded files can be optionally deleted from the remote/local source directory. Only files (not directories) are transferred - there is no option to recursively transfer nested directories.
pip3 install sftp_py
git clone https://github.com/wanidala/sftp_py.git
cd sftp_py
pip3 install .
sftp_py can be used within a Python script as follows:
from sftp_py.transfer import RemoteTransfer
conn = RemoteTransfer([
arguments...
])
# Establish connection and download files.
# local_path must be a directory
# remote_path can be a single file or a directory containing files to be transferred
conn = RemoteTransfer(host=host_name, username=user_name, port=22, key=private_key_path)
conn.connect()
conn.list_remote_dir(remote_path) # inspect directory contents
conn.remote_download(remote_path, local_path, copy_hidden_files=True, copy_symlink_files=True, remove=False)
# hidden files (.*) and symlink files are copied by default
# remove=True: downloaded files are removed immediately after transfer
# remove=False (default): downloaded files are recorded and can be removed later...
conn.downloaded_files # conn.downloaded_files records list of downloaded filenames
conn.remove_downloaded() # remove downloaded files
# Disconnect once finished
conn.disconnect()
# Code for uploading to a remote server is similar to code for downloading from a remote server...
conn = RemoteTransfer(host=host_name, username=user_name, port=22, key=private_key_path)
conn.connect()
conn.remote_upload(remote_path, local_path, remove=True) # upload and remove uploaded files from local_path
conn.disconnect()