Skip to content

maurosoft1973/Docker-Alpine-LFTP

Repository files navigation

LFTP Docker image running on Alpine Linux

Docker Automated build Docker Pulls Docker Stars

Alpine Version

The Docker images (maurosoft1973/alpine-lftp) is based on the minimal Alpine Linux with LFTP Version v4.9.2-r4.

Alpine Version 3.17.3 (Released Mar 29 2023)
LFTP Version 4.9.2-r4 (Released 2022-08-02 08:35:20)

Description

The LFTP is a sophisticated file transfer program supporting a number of network protocols (ftp, http, sftp, fish, torrent). Like BASH, it has job control and uses the readline library for input. It has bookmarks, a built-in mirror command, and can transfer several files in parallel. It was designed with reliability in mind. LFTP is free software, distributed under the GNU GPL license. For more information (lftp)

LFTP includes the following features (some may be missed in this list):

  • FTP and HTTP protocols support.
  • FTP (e.g. TIS FWTK) proxy support.
  • HTTP proxy support.
  • FTP over HTTP proxy support (hftp and CONNECT method).
  • HTTPS and FTPS protocols support using GNU TLS or OpenSSL library.
  • Automatic OPIE/SKEY support in FTP protocol.
  • FXP transfers support (between two FTP servers, bypassing client machine).
  • FTP listings support: unix-style, NT, EPLF, OS/2, AS400, MacWebStar, MLSD.
  • FTP implicit compression (MODE Z) support.
  • Automatic reconnect and retry of an operation on retriable errors or timeout.
  • IPv6 support in both FTP and HTTP.
  • FISH protocol support. It uses ssh with no special program on server side.
  • SFTP protocol v3-v6 support.
  • HTTP/1.1 keep-alive support.
  • HTTP basic and digest authentication.
  • Partial WebDAV support.
  • BitTorrent protocol support (including IPv6).
  • BitTorrent extensions: Fast, DHT, PEX, Multi-tracker, Metadata, magnet.
  • Experimental support for SRV DNS records.
  • SOCKS support (configure option).
  • Modification time preservation (if server can report it).
  • reget and reput support.
  • Built-in mirror and reverse mirror (mirror -R).
  • Transfer rate throttling for each connection, for each host and for all connections in total.
  • Limit for number of connections to the same site. Interruption of background transfer to do a foreground operation when the limit is reached.
  • Socket options tuning: buffer size and maximum segment size.
  • Job queueing.
  • Job execution at specified time.
  • Comprehensive scripting support.
  • URL recognition in most operations.
  • Readline library is used for input.
  • Context sensitive completion.
  • Bash-like prompt extensions.
  • Launching of local shell commands.
  • Suspend support.
  • Bookmarks.
  • Aliases.
  • Saving of last directory on each site. `cd -' to go there.
  • Copying of files (including mirror) between two servers over the client, automatic usage of FXP when possible to bypass the client.
  • Numerous settings which can be associated with a specific server or a group.
  • Paging of remote files using external program.
  • zcat and zmore support.
  • Help for commands.
  • Command history saved in a file.
  • Transfer status includes rate and ETA.
  • File listing cache.
  • Background jobs (bash-like).
  • Job output redirection to a file or to a program via pipe.
  • Conditional commands depending on exit status of previous one.
  • Loading of binary modules at run time (configure option).
  • pget to download a file using several connections. `pget' download can be continued as it saves a status file periodically.
  • mirror can download several files in parallel (--parallel option) and a single file with `pget' (--use-pget-n option).
  • Slots. Each slot is a separate session, switch using Meta-{1-9} or `slot' command. Refer to a slot site using pseudo URL slot:name.

Architectures

  • :aarch64 - 64 bit ARM
  • :armhf - 32 bit ARM v6
  • :armv7 - 32 bit ARM v7
  • :ppc64le - 64 bit PowerPC
  • :x86 - 32 bit Intel/AMD
  • :x86_64 - 64 bit Intel/AMD (x86_64/amd64)

Tags

  • :latest latest branch based (Automatic Architecture Selection)
  • :aarch64 latest 64 bit ARM
  • :armhf latest 32 bit ARM v6
  • :armv7 latest 32 bit ARM v7
  • :ppc64le latest 64 bit PowerPC
  • :x86 latest 32 bit Intel/AMD
  • :x86_64 latest 64 bit Intel/AMD
  • :test test branch based (Automatic Architecture Selection)
  • :test-aarch64 test 64 bit ARM
  • :test-armhf test 32 bit ARM v6
  • :test-armv7 test 32 bit ARM v7
  • :test-ppc64le test 64 bit PowerPC
  • :test-x86 test 32 bit Intel/AMD
  • :test-x86_64 test 64 bit Intel/AMD
  • :3.17.3 3.17.3 branch based (Automatic Architecture Selection)
  • :3.17.3-aarch64 3.17.3 64 bit ARM
  • :3.17.3-armhf 3.17.3 32 bit ARM v6
  • :3.17.3-armv7 3.17.3 32 bit ARM v7
  • :3.17.3-ppc64le 3.17.3 64 bit PowerPC
  • :3.17.3-x86 3.17.3 32 bit Intel/AMD
  • :3.17.3-x86_64 3.17.3 64 bit Intel/AMD
  • :3.17.3-4.9.2-r4 3.17.3-4.9.2-r4 branch based (Automatic Architecture Selection)
  • :3.17.3-4.9.2-r4-aarch64 3.17.3 64 bit ARM
  • :3.17.3-4.9.2-r4-armhf 3.17.3 32 bit ARM v6
  • :3.17.3-4.9.2-r4-armv7 3.17.3 32 bit ARM v7
  • :3.17.3-4.9.2-r4-ppc64le 3.17.3 64 bit PowerPC
  • :3.17.3-4.9.2-r4-x86 3.17.3 32 bit Intel/AMD
  • :3.17.3-4.9.2-r4-x86_64 3.17.3 64 bit Intel/AMD

Layers & Sizes

Version Size
Version MicroBadger Size (tag)
Version MicroBadger Size (tag)
Version MicroBadger Size (tag)
Version MicroBadger Size (tag)
Version MicroBadger Size (tag)

Environment Variables:

Main LFTP parameters:

  • LC_ALL: default locale (en_GB.UTF-8)
  • TIMEZONE: default timezone (Europe/Brussels)
  • SHELL_TERMINAL: default shell (bin/sh)

Sample Use with gitlab pipeline

The script below allows you to synchronize files on a remote server, excluding hidden files and folders (-X .* -X .*/) The script restore_last_git_modified_time.sh sets the last modified date on the repository files before syncronized.

stages:
    - deploy

deploy-develop:
    stage: deploy
    image: maurosoft1973/alpine-lftp
    variables:
        FTP_SERVER: 'ftp server'
        FTP_PORT: 'ftp port'
        FTP_USERNAME: 'ftp username'
        FTP_PASSWORD: 'ftp password'
        FTP_LOCAL_FOLDER: 'local folder'
        FTP_REMOTE_FOLDER: 'remote folder'
    only:
        - develop
    script:
        - /restore_last_git_modified_time.sh
        - lftp -e "set ssl:verify-certificate no; set ftp:use-mdtm-overloaded true; open $FTP_SERVER; user $FTP_USERNAME $FTP_PASSWORD; mirror -X .* -X .*/ --reverse --verbose --delete $FTP_LOCAL_FOLDER $FTP_REMOTE_FOLDER; bye"

deploy-prod:
    stage: deploy
    image: maurosoft1973/alpine-lftp
    variables:
        FTP_SERVER: 'ftp server'
        FTP_PORT: 'ftp port'
        FTP_USERNAME: 'ftp username'
        FTP_PASSWORD: 'ftp password'
        FTP_LOCAL_FOLDER: 'local folder'
        FTP_REMOTE_FOLDER: 'remote folder'
    only:
        - prod
    script:
        - /restore_last_git_modified_time.sh
        - lftp -e "set ssl:verify-certificate no; set sftp:auto-confirm yes; open sftp://$FTP_SERVER -p $FTP_PORT -u $FTP_USERNAME,$FTP_PASSWORD; mirror -X .* -X .*/ --reverse --verbose --delete $FTP_LOCAL_FOLDER $FTP_REMOTE_FOLDER; bye"

Last Update 22.12.2023 04:12:07