How to Install and Configure NcFTP Client on Windows, macOS, and LinuxNcFTP is a family of FTP utilities that provide a more user-friendly command-line FTP client than the traditional ftp program. It supports features like bookmarking, background transfers, recursive get/put, and secure connections (via TLS when combined with an ftps-capable server). This guide walks through installation and configuration of the NcFTP client on Windows, macOS, and Linux, and shows common usage examples and tips for automation.
Overview: what is NcFTP Client and when to use it
NcFTP Client (often simply called ncftp) is a command-line FTP client focused on usability and scripting. It is useful when:
- You need reliable command-line FTP operations.
- You want scripting-friendly file transfers (batch jobs, cron).
- You prefer a lightweight client with bookmarks and recursive transfer features.
- You require compatibility with older FTP servers or want a simple alternative to GUI clients.
NcFTP itself is separate from NcFTPd (the server). This article covers the NcFTP client tools: ncftp (interactive), ncftpget and ncftpput (non-interactive for scripts), ncftpbatch, and ncftpls.
Before you begin: prerequisites and security considerations
- Ensure you have administrator/root privileges to install packages.
- NcFTP transfers plain FTP by default. If you must send credentials or sensitive data, prefer FTPS (explicit TLS) or SFTP (SSH-based) where possible. NcFTP does not provide native SFTP (SSH) support — use tools like sftp/ssh or lftp for SFTP.
- If firewall or NAT is present, be prepared to configure passive (PASV) or active (PORT) modes. PASV is generally easier behind NAT.
Installing NcFTP
macOS
Option A — Homebrew (recommended)
- Install Homebrew if not present:
- /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
- Install ncftp:
- brew install ncftp
Option B — MacPorts
- Install MacPorts.
- sudo port install ncftp
Option C — Build from source
- Download latest NcFTP source from the official site.
- Unpack, then in Terminal:
./configure make sudo make install
Linux
Most distributions include NcFTP in their package repositories.
Debian/Ubuntu:
sudo apt update sudo apt install ncftp
RHEL/CentOS/Fedora (DNF/YUM):
sudo dnf install ncftp
sudo yum install ncftp
Arch Linux:
sudo pacman -S ncftp
Build from source (generic):
wget https://www.ncftp.com/ncftp/ncftp-<version>.tar.gz tar xzf ncftp-<version>.tar.gz cd ncftp-<version> ./configure make sudo make install
Windows
Option A — Windows Subsystem for Linux (WSL) — recommended
- Enable WSL and install a distribution (Ubuntu) from Microsoft Store.
- Open WSL terminal and follow Linux installation steps:
sudo apt update sudo apt install ncftp
Option B — Native Win32 builds
- NcFTP historically offered Windows builds, but they may be outdated. Check ncftp.com for Windows binaries. If you find a maintained binary, download and add to PATH.
Option C — Use Cygwin / MSYS2
- Install Cygwin or MSYS2.
- Use the package manager to install ncftp if available, or build from source in the POSIX environment.
Basic configuration
NcFTP reads configuration from:
- System-wide config (usually /etc/ncftp*)
- Per-user config in ~/.ncftp (directory) and files like bookmarks, history, and .netrc for credentials. Use file permissions (600) for credential files.
Create ~/.ncftp directory if it doesn’t exist:
mkdir -p ~/.ncftp
Bookmarks
- Use the interactive ncftp client to save bookmarks:
- ncftp ftp.example.com
- When connected, use menu options or commands to add a bookmark.
- Or edit ~/.ncftp/bookmarks manually. Format is straightforward; prefer the client for correctness.
Credentials: .netrc (optional)
- Store host, username, password so scripts can run non-interactively.
- Create ~/.netrc with content:
machine ftp.example.com login username password secretpassword
- Secure it:
chmod 600 ~/.netrc
Enable passive mode (recommended behind NAT)
- For command-line tools, use -P or -p flags depending on the subcommand. Example with ncftpget:
ncftpget -P 21 -u username -p password -z ftp.example.com /local/dir /remote/file
- For interactive ncftp, set passive mode in options or edit ~/.ncftp/ncftp.cfg if available.
TLS/FTPS
-
NcFTP supports FTPS (explicit TLS) when built with OpenSSL. Use ftps:// or -E flags depending on subcommand:
ncftp ftp.example.com # then in client: open -E ftp.example.com
-
For ncftpget/ncftpput, check –ssl or related flags in your build. Example:
ncftpget -E -u username -p password ftps://ftp.example.com /local/dir /remote/file
Common commands and examples
Interactive client
ncftp ftp.example.com # Commands inside: ls cd pub get file.zip quit
Non-interactive single file download with ncftpget
ncftpget -u user -p pass ftp.example.com /local/path /remote/path/filename
Recursive download
ncftpget -R -v -u user -p pass ftp.example.com /local/path /remote/path/
Upload with ncftpput
ncftpput -u user -p pass ftp.example.com /remote/path /local/file
Recursive upload
ncftpput -R -v -u user -p pass ftp.example.com /remote/path /local/dir/
Using .netrc for authentication (no -u/-p)
ncftpget ftp.example.com /local/path /remote/path
Batch mode with ncftpbatch
- Create a file batch.txt:
open ftp.example.com lcd /local/dir cd /remote/dir put file1 get file2 quit
- Run:
ncftpbatch -f batch.txt
Verbose and progress
- -v for verbose, -V for very verbose, and progress shown by default for non-interactive tools.
Exit codes
- Check exit codes in scripts to detect failures. ncftpget and ncftpput return non-zero on error; wrap calls in shell scripts and test $?.
Examples: automation with cron/systemd timers
Simple cron job (download nightly)
0 2 * * * /usr/bin/ncftpget -u backupuser -p 's3cret' -R ftp.example.com /backups /remote/backupdir >/var/log/ncftpget.log 2>&1
Systemd service + timer (more robust)
- /etc/systemd/system/ncftp-backup.service “` [Unit] Description=Run nightly ncftp backup
[Service] Type=oneshot ExecStart=/usr/bin/ncftpget -u backupuser -p ‘s3cret’ -R ftp.example.com /backups /remote/backupdir
- /etc/systemd/system/ncftp-backup.timer
[Unit] Description=Daily ncftp backup timer
[Timer] OnCalendar=–-* 02:00:00 Persistent=true
[Install] WantedBy=timers.target
- Enable:
sudo systemctl enable –now ncftp-backup.timer “`
Troubleshooting
- Connection refused / timeout:
- Verify host, port, and network reachability (ping, telnet host 21).
- Check passive vs active mode; behind NAT use passive.
- Authentication failures:
- Verify credentials, .netrc format, and file permissions.
- TLS handshake errors:
- Ensure server supports explicit TLS (FTPS); check ncftp build with SSL support.
- Permissions on local files:
- Ensure the user running ncftp has filesystem permissions for target directories.
- Large transfers failing / timing out:
- Try resume options, increase timeouts, or split transfers.
Alternatives & when to choose them
- Use sftp/ssh for secure file transfers (preferable when SSH access is available).
- Use lftp for advanced scripting, mirroring (supports FTP, FTPS, SFTP).
- Use GUI clients (FileZilla, WinSCP) for interactive transfers and easier TLS/SFTP setup.
Comparison (short):
Tool | Protocols | Best for |
---|---|---|
NcFTP | FTP, FTPS (build-dependent) | Lightweight scripted FTP with bookmarks |
lftp | FTP, FTPS, SFTP | Advanced scripting, mirroring, protocol flexibility |
sftp/ssh | SFTP | Secure transfers over SSH |
FileZilla/WinSCP | FTP, FTPS, SFTP | GUI-driven transfers |
Security checklist
- Prefer FTPS or SFTP over plain FTP when transferring credentials or sensitive data.
- Store credentials in ~/.netrc with permission 600; avoid embedding passwords in scripts where possible.
- Use firewall rules to restrict FTP access, and monitor logs for unusual activity.
- Keep NcFTP and OpenSSL (if used) updated.
Conclusion
NcFTP remains a useful, lightweight FTP client for both interactive use and automation. On macOS and Linux it’s straightforward to install via package managers; on Windows the easiest path is WSL. Configure passive mode, secure credentials with .netrc, and prefer secure transport (FTPS/SFTP) when handling sensitive data. Use ncftpget/ncftpput for scripted transfers and ncftp for an interactive session with bookmarks and convenience features.
Leave a Reply