Skip to content

LFTP Cheat Sheet: Enhance Your File Transfer Capabilities

Explore the full potential of LFTP with this detailed cheat sheet. From setting up torrent options, SSH key configurations, to mastering FXP transfers and multi-segment downloading, this guide provides all you need for efficient file management and transfer.

Whether you're looking to optimize your downloads, manage files across servers, or secure your connections, this cheat sheet is your go-to resource for all things LFTP.


List all files in a tarball 'on-the-fly'
lftp -e "cat debootstrap_1.0.119~bpo10+1.tar.gz | tar -tzvf -" https://ftp.debian.org/debian/pool/main/d/debootstrap/

Torrent settings

set torrent:ip ""
set torrent:ipv6 ""
set torrent:max-peers 60
set torrent:port-range 6881-6889
set torrent:retracker ""
set torrent:seed-max-time 30d
set torrent:seed-min-peers 3
set torrent:stop-on-ratio 2.0
set torrent:use-dht yes

Add ssh key in either way in lftprc

set ssl:key-file ~/.ssh
set sftp:connect-program "ssh -a -x -i yourprivatekeyfile"

FXP: Server A > Server B

lftp -c 'open -e "mirror <server-A_dir_path> <server-B_url>" <server-A_site>'

Dump current settings

lftp -e "set;exit"

Dump all settings

lftp -e "set -a ;exit"

Multi-segment file downloading with lftp

lftp -u user,pass ftp://site.com -e 'pget -c -n 6 file'

Multi-segment directory downloading with lftp

lftp -u user,pass ftp://site.com/ -e 'mirror -c --parallel=3 --use-pget-n=5 "Some folder"'

Upload a File

lftp -e 'put /local/path/yourfile.mp4; bye' -u user,password ftp.foo.com

Connection Timeout

lftp -e 'set net:timeout 10; put /local/path/yourfile.mp4; bye' -u user,password ftp.foo.com

Active Mode

For what it's worth, Active mode – older, stinkier, and won't go through your firewall:

lftp -e 'set ftp:passive-mode false; set net:timeout 10; put /local/path/yourfile.mp4; bye' -u user,password ftp.foo.com

Download

lftp -e 'set net:timeout 10; get yourfile.mp4; bye' -u user,password ftp.foo.com

If you need to put it in a specific local directory

lftp -e 'set net:timeout 10; get yourfile.mp4 -o /local/path/yourfile.mp4; bye' -u user,password ftp.foo.com

Recursive Upload

lftp -e 'mirror -R /local/path/ /' -u user,password ftp.foo.com

Recursive Download

lftp -e 'mirror / /local/path/' -u user,password ftp.foo.com

Regular-Expression–Match Upload

lftp -e 'mirror -R -i "\.(html?|css|js)$" /local/path/ /' -u user,password ftp.foo.com

Non-Recursive

Deploy only root-level files, not the entire directory tree. The -r switch disables recursion. In this example, we are also only deploying HTML, CSS, and JavaScript

JavaScript

lftp -e 'mirror -R -r -i "\.(html?|css|js)$" /local/path/ /' -u user,password ftp.foo.com

Special Characters in Username or Password

lftp -e 'put /local/path/yourfile.mp4; bye' -u user,password\!\! ftp.foo.com

FXP Transfer: site 1 > site2

lftp -d  -c open -e "mirror  -P15 \
	"ftp://user:password@host:port/path" \
	'ftp://user:password@host:port/path'

FXP Transfer: site 1 > site2

lftp -e "mirror -I googleAnalytics-master-dfd9155.tar.gz \ 
	https://extdist.wmflabs.org/dist/extensions ftp://wuseman:odemnn@localhost:65005/site/"

Download all files from server in 20 parallel transfers

lftp -d -e open https://extdist.wmflabs.org/dist/extensions/ -e "mirror -P 20 ."

Disable notification check

mkdir ~/.lftp
echo "set ssl:verify-certificate no" >> ~/.lftp/rc

Download all folders inside /mp3/* on ftp to mp3

lftp -e open ftp://user1:pass1:site1:port -e "mirror -c -P1 remote/path /local/path" -d

FXP Between SITE 1 and SITE 2 with 20 threads at same time

lftp -e "set ftp:use-fxp true ;mirror -R -P20 ftp://user1:pass1:site1:port:/path \
	ftp://user1:pass1:site1:port:/path"  -d

Use lftp to multi-threaded download files from websites

lftp -c "pget -n 10 http://example.com/foo.bar"

Mirrors directory to a ftp server

lftp -u login,passwd" -e "mirror reverse /my/from/dir/ /ftp/target/dir/" ftp://site.com/

Mirror a directory structure from websites with an Apache-generated file indexes

lftp -e "mirror -c" http://example.com/foobar/

Multi-segment file downloading with lftp

lftp -u "user,pass" ftp://site.com -e 'pget -c -n 6 file'

Mirror a directory structure from websites with an Apache-generated file indexes

lftp -e "mirror -c" http://example.com/foobar/

Backup sda partition to ftp ( using pipes and gziped backup )

dd if=/dev/sda bs=2048 conv=noerror,sync | gzip -fc | lftp -u user,passwd domain.tld -e "put /dev/stdin -o backup-$(date +%Y%m%d%H%M).gz; quit"

Fastest segmented parallel sync of a remote directory over ssh

lftp -u user,pwd -e "set sftp:connect-program 'ssh -a -x -T -c arcfour -o Compression=no'; mirror -v -c --loop --use-pget-n=3 -P 2 /remote/dir/ /local/dir/; quit" sftp://remotehost:22

Multi-segment directory downloading with lftp

lftp -u "user,pass" ftp://site.com/ -e 'mirror -c parallel=3 use-pget-n=5 "Some folder"'

Gets directory and files tree listing from a FTP-server

lftp -u "user,pass" ftp://site.com/ -e "du -a;exit" > server-listing.txt