介紹如何在 Linux 系統的命令列中使用 NcFTP 指令 FTP 工具,上傳或下載檔案。
NcFTP 是一個指令介面的 FTP client 工具,可以讓 Linux 使用者在命令列或指令稿的環境下,輕鬆透過 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
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