介紹如何在 Linux 系統的命令列中使用 NcFTP 指令 FTP 工具,上傳或下載檔案。
NcFTP 是一個指令介面的 FTP client 工具,可以讓 Linux 使用者在命令列或指令稿的環境下,輕鬆透過 FTP 等檔案傳輸協定上傳或下載檔案。
FTP 傳輸檔案
若要登入匿名的 FTP 伺服器,只要執行 ncftp 再加上 FTP 伺服器位址即可:
# 登入 FTP 匿名伺服器
ncftp ftp://ftp.gnu.org/
若要直接在登入之後進入指定目錄,可將路徑直接加在伺服器位址上:
# 登入 FTP 伺服器,並進入指定目錄
ncftp ftp://ftp.gnu.org/gnu/
若 FTP 伺服器需要帳號與密碼,則可使用 -u 與 -p 來分別指定帳號與密碼:
# 指定帳號與密碼 ncftp -u USERNAME -p PASSWORD ftp://your.site/path/
在進入 NcFTP 的互動式 shell,並成功登入伺服器之後,會顯示類似這樣的提示訊息:
Login successful. Logged in to ftp.gnu.org. Current remote directory is /. ncftp / >
接著就可以使用 NcFTP 的指令進行檔案的上傳、下載等各種操作了,以下是一些常用的 NcFTP 指令。
| 指令 | 說明 | 範例 | 
|---|---|---|
| ls | 列出檔案清單 | ls | 
| get | 下載檔案 | get FILE.txt、get *.txt | 
| get -R | 下載目錄 | get -R FOLDER | 
| put | 上傳檔案 | put FILE.txt | 
| put -R | 上傳目錄 | put -R FOLDER | 
| cat | 顯示檔案內容 | cat FILE.txt | 
| cd | 進入目錄 | cd FOLDER | 
| chmod | 更改檔案權限 | chmod 644 FILE.txt | 
| rename | 更改檔案名稱 | rename FILE.txt NEW.txt | 
| rm | 移除檔案 | rm FILE.txt | 
| mkdir | 建立目錄 | mkdir FOLDER | 
| rmdir | 移除目錄 | rmdir FOLDER | 
| pwd | 顯示目前路徑 | pwd | 
| edit | 編輯檔案 | edit FILE.txt | 
| page | 查閱檔案內容 | page FILE.txt | 
| pls | 分頁列出檔案清單 | pls | 
以下是對本地端操作的指令。
| 指令 | 說明 | 範例 | 
|---|---|---|
| lls | 列出本地端檔案清單 | lls | 
| lcd | 進入本地端目錄 | lcd FOLDER | 
| lchmod | 更改本地端檔案權限 | lchmod 644 FILE.txt | 
| lrename | 更改本地端檔案名稱 | lrename FILE.txt NEW.txt | 
| lrm | 移除本地端檔案 | lrm FILE.txt | 
| lmkdir | 建立本地端目錄 | lmkdir FOLDER | 
| lmkdir | 移除本地端目錄 | lrmdir FOLDER | 
| lpwd | 顯示目前本地端路徑 | lpwd | 
| lpage | 查閱本地端檔案內容 | lpage FILE.txt | 
NcFTP 也有背景工作的功能,放入背景的工作會由另外一個 NcFTP 的 daemon 負責處理,以下是背景工作相關的指令。
| 指令 | 說明 | 範例 | 
|---|---|---|
| bgget | 背景下載檔案 | bgget FILE.txt | 
| bgput | 背景上傳檔案 | bgput FILE.txt | 
| bgstart | 開始背景工作 | bgstart | 
| jobs | 顯示背景工作 | jobs | 
如果在下載目錄時出現這樣的錯誤訊息:
tar: This does not look like a tar archive tar: Error exit delayed from previous errors
可以加上 -T 參數,關閉 tar 壓縮下載功能:
# 不使用 tar 壓縮下載目錄 get -TR FOLDER
快速列出 FTP 伺服器檔案
ncftpls 指令可用來快速列出 FTP 伺服器上指定路徑下的檔案,作用與用法都類似 Linux 的 ls 指令:
# 列出 FTP 伺服器上的檔案
ncftpls ftp://ftp.gnu.org/gnu/
3dldf/ 8sync/ =README =README-about-.diff-files =README-about-.gz-files
若要顯示檔案的詳細資訊,則可加上 -l 參數:
# 列出 FTP 伺服器上的檔案詳細資訊 ncftpls -l ftp://ftp.gnu.org/gnu/
drwxr-xr-x 2 3003 3003 4096 Dec 13 2013 3dldf drwxr-xr-x 2 3003 3003 4096 Mar 18 2017 8sync -rw-r--r-- 1 3003 65534 1492 Jan 25 2001 =README -rw-r--r-- 1 3003 65534 745 Mar 20 1997 =README-about-.diff-files -rw-r--r-- 1 3003 65534 1042 Jan 08 2000 =README-about-.gz-files
加上 -a 參數可以一併列出句點開頭的隱藏檔:
# 列出隱藏檔 ncftpls -a ftp://ftp.gnu.org/gnu/
若 FTP 伺服器需要帳號與密碼,則可使用 -u 與 -p 來分別指定帳號與密碼:
# 指定帳號與密碼 ncftpls -u USERNAME -p PASSWORD ftp://your.site/path/
快速下載檔案
若要在 shell 之下或是指令稿之中快速下載 FTP 伺服器上的檔案,可以使用 ncftpget 指令,其作用就跟一般的 wget 非常類似:
# 下載 FTP 伺服器上的檔案
ncftpget ftp://ftp.gnu.org/gnu/w3.README
若要下載整個目錄,則加上 -R 參數:
# 下載 FTP 伺服器上的整個目錄 ncftpget -R ftp://ftp.gnu.org/gnu/which/
帳號與密碼的指定方式也都一樣:
# 指定帳號與密碼 ncftpget -u USERNAME -p PASSWORD ftp://your.site/path/file.txt
快速上傳檔案
若需要在 shell 之下或是指令稿之中快速上傳檔案至 FTP 伺服器,則可使用 ncftpput 指令:
# 上傳檔案至 FTP 伺服器
ncftpput ftp.site.com /remote/upload/ local.txt
若要上傳整個目錄,則可加上 -R 參數:
# 上傳目錄至 FTP 伺服器
ncftpput -R ftp.site.com /remote/upload/ local.txt
帳號與密碼的指定方式也都一樣:
# 指定帳號與密碼 ncftpput -u USERNAME -p PASSWORD ftp.site.com /remote/upload/ local.txt
ncftpput 的 -c 參數可以讓它從標準輸入讀取資料上傳至 FTP 伺服器,跟其他的 Linux 指令搭配之後,可應用在很多地方,例如直接將資料壓縮備份後,上傳至 FTP 伺服器:
# 備份資料至 FTP 伺服器 tar zcf - /my/data | ncftpput -c ftp.site.com /upload/backup.tar.gz

