Difference between revisions of "Lftp"

From ScientificComputing
Jump to: navigation, search
Line 19: Line 19:
 
=== Windows ===
 
=== Windows ===
 
'''NOT TESTED!''' There is a Windows version available under https://nwgat.ninja/lftp-for-windows/ . Since openssh  is officially available for Windows 10 it is strongly recommended to use Windows 10 only.
 
'''NOT TESTED!''' There is a Windows version available under https://nwgat.ninja/lftp-for-windows/ . Since openssh  is officially available for Windows 10 it is strongly recommended to use Windows 10 only.
 +
 +
== Mirror data ==
 +
lftp has built-in mirror which can download or update a whole directory tree. There is also reverse mirror (mirror -R) which uploads or updates a directory
 +
tree on server. (copied from man page)
 +
The mirror option is used in some of the examples below
  
 
== Initiate transfer from ID-HPC clusters (inside out) ==
 
== Initiate transfer from ID-HPC clusters (inside out) ==
Line 45: Line 50:
 
The lftp client must be installed on your local machine (see [[lftp#Installation|client installation]])
 
The lftp client must be installed on your local machine (see [[lftp#Installation|client installation]])
  
== Mirror data ==
+
=== Mirror local directory to cluster ===
lftp has built-in mirror which can download or update a whole directory tree. There is also reverse mirror (mirror -R) which uploads or updates a directory
+
To mirror a local directory to your scratch directory on Euler you can use:
tree on server. Mirror can also synchronize directories between two remote servers, using FXP if available.
+
 
(copied from man page)
+
lftp sftp://<username>:@login.euler.ethz.ch -e "mirror -v -r -R -P 16 /Users/<localuser>/Scratch/source_dir /cluster/scratch/<username>/ ; exit"
 +
important detail: the colon (:) after <username> sends a empty password to sftp. In this case sftp uses the ssh-key for authentication. If you want to type your password on the prompt, don't use the ':'.
 +
 
 +
 +
 
 +
 
  
 
=== Interactive examples ===
 
=== Interactive examples ===

Revision as of 16:39, 17 May 2019

Synopsis

lftp is a file transfer program designed to transfer bigger amount of data (big files).
lftp is used on top of file transfer protocols such as ftp, http, sftp, fish, torrent. It allows to parallelize the data streams.
See also the lftp webpage (https://lftp.yar.ru/).

Warning

Attention Use lftp carefully, don't overload the connections, respect the bandwidth needs of other users! Set your parameters carefully - especially the number of threads (-P <threads>).

Installation

If you want to use lftp from your workstation you have to install it. If your workstation acts as server in the data transfer, no installation is necessary. It is recommended to use at minimum LFTP version 4.5.3.

Linux

Most distributions have an lftp version installed. However it is recommended to install a recent version from: https://lftp.yar.ru/get.html

MacOS

MacPorts (https://www.macports.org/) contains a recent version of lftp.

Windows

NOT TESTED! There is a Windows version available under https://nwgat.ninja/lftp-for-windows/ . Since openssh is officially available for Windows 10 it is strongly recommended to use Windows 10 only.

Mirror data

lftp has built-in mirror which can download or update a whole directory tree. There is also reverse mirror (mirror -R) which uploads or updates a directory tree on server. (copied from man page) The mirror option is used in some of the examples below

Initiate transfer from ID-HPC clusters (inside out)

For smaller and biggerfiles

To copy (download) the content of a folder from a remote system to a local path inside Leonhard with 8 parallel file sessions:

lftp sftp://username@hostname.ethz.ch -e "mirror -P 8 --use-pget-n=1 /data/smallfiles /cluster/scratch/username/test1/; exit”

While -P <N>: number of threats; --use-pget-n=<n>: number of chunks per file (default 1)

To copy (download) the content of a folder from a remote system to a local path in Leonhard with 12 parallel file sessions:

lftp sftp://username@hostname.ethz.ch -e "mirror -P 12 --use-pget-n=1 /data/smallfiles /cluster/scratch/username/test2/; exit”

For bigger files

Bigger files minimum > 20GB (test cases), real use cases for > 100GB.

LFTP copy (download) 4 files in parallel and in addition split each file into 4 chunks during transfer (16 flows in total):

lftp sftp://username@hostname.ethz.ch -e "mirror -P 4 --use-pget-n=4 /data/bigfiles /cluster/scratch/username/test3/; exit”

LFTP copy (download) 8 files in parallel and in addition split each file into 4 chunks during transfer (32 flows in total):

lftp sftp://username@hostname.ethz.ch -e "mirror -P 8 --use-pget-n=4 /data/bigfiles /cluster/scratch/username/test4/; exit"


Initiate transfer from your local machine (outside in)

Prerequisites

The lftp client must be installed on your local machine (see client installation)

Mirror local directory to cluster

To mirror a local directory to your scratch directory on Euler you can use:

lftp sftp://<username>:@login.euler.ethz.ch -e "mirror -v -r -R -P 16 /Users/<localuser>/Scratch/source_dir /cluster/scratch/<username>/ ; exit"

important detail: the colon (:) after <username> sends a empty password to sftp. In this case sftp uses the ssh-key for authentication. If you want to type your password on the prompt, don't use the ':'.



Interactive examples

https://www.cyberciti.biz/faq/lftp-mirror-example/

Further instructions

Manpages are your friend. man lftp serves as reference manual. The web version of the man page is on the lftp website