今天同僚問我一個問題,在Linux 下通路FTP,并将檔案上傳上去。 我之前一直是用WinSCP工具的。 先将檔案從linux copy到windows下,然後在傳到ftp上。 google 一下。 方法也比較簡單。 這裡隻讨論通過終端來連接配接,因為也可以通過IE 或者其他工具。
1. Linux 終端連接配接FTP
[oracle@Dave ~]$ ftp 10.85.7.97
Connected to 10.85.7.97.
220 Serv-U FTP Server v6.4 for WinSock ready...
500 'AUTH': command not understood.
KERBEROS_V4 rejected as an authentication type
Name (10.85.7.97:oracle): super
331 User name okay, need password.
Password: -- Linux 的密碼是不回顯的
230 User logged in, proceed.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
如果FTP 允許匿名使用者,那麼使用者名要輸入anonymous,密碼任意。 不能直接敲回車。
2. 檢視FTP 指令
ftp> ?
Commands may be abbreviated. Commands are:
! cr mdir proxy send
$ delete mget sendport site
account debug mkdir put size
append dir mls pwd status
ascii disconnect mode quit struct
bell form modtime quote system
binary get mput recv sunique
bye glob newer reget tenex
case hash nmap rstatus trace
ccc help nlist rhelp type
cd idle ntrans rename user
cdup image open reset umask
chmod lcd passive restart verbose
clear ls private rmdir ?
close macdef prompt runique
cprotect mdelete protect safe
可以通過help command 檢視每個指令的說明
ftp> help put
put send one file
ftp> help mput
mput send multiple files
3. 上傳檔案
Put指令:格式:put local-file [remote-file] 将一個檔案上傳到ftp
Mput指令:格式:mput local-files 将本地主機中一批檔案傳送至遠端主機.
注意:mput指令隻能将目前本地目錄下的檔案上傳到FTP上的目前目錄。比如,在 /root/dave下運作的ftp指令,則隻有在/root/dave下的檔案linux才會上傳到伺服器上的目前目錄下。
Put 代碼示例:
ftp> pwd -- 顯示FTP上目前路徑
257 "/" is current directory.
ftp> ls -- 顯示目前目錄下的檔案
227 Entering Passive Mode (10,85,7,97,16,141)
150 Opening ASCII mode data connection for /bin/ls.
drw-rw-rw- 1 user group 0 Aug 17 16:11 .
drw-rw-rw- 1 user group 0 Aug 17 16:11 ..
-rw-rw-rw- 1 user group 1433088 Feb 5 2010 ASPAJAXExtSetup_PConline_PConline.msi
-rw-rw-rw- 1 user group 197626837 Mar 8 10:00 DelphiV7.0.zip
drw-rw-rw- 1 user group 0 Jul 9 10:17 HHT
-rw-rw-rw- 1 user group 9235148 Dec 24 2009 Install_HSKey_V1.3.exe
-rw-rw-rw- 1 user group 47316992 May 27 16:38 Release_4.rar
ftp> mkdir Dave -- 建立檔案夾Dave
257 "/Dave" directory created.
ftp> cd Dave -- 進入檔案夾Dave
250 Directory changed to /Dave
ftp> pwd -- 顯示目前目錄
257 "/Dave" is current directory.
ftp> lcd -- 顯示目前本地的路徑,我們可以将這個路徑下的這個檔案上傳到FTP伺服器的相關位置
Local directory now /home/oracle
ftp> ! -- 退出目前的視窗,傳回Linux 終端,當我們退出終端的時候,又會傳回到FTP上。
[oracle@Dave ~]$ ls -- 顯示目前目錄下的檔案
dead.letter scripts sqlnet.log
[oracle@Dave ~]$ vi Dave -- 建立檔案 Dave
[oracle@Dave ~]$ vi DBA -- 建立檔案 DBA
[oracle@Dave ~]$ ls -- 顯示檔案夾裡的内容,等會我們将這些檔案copy到FTP上
Dave DBA dead.letter scripts sqlnet.log
[oracle@Dave ~]$ exit -- 退出終端,傳回FTP指令行
exit
ftp> lcd
ftp> put DBA DBA -- 将剛才建立的檔案DBA 上傳到ftp的目前目錄上并命名為DBA。
local: DBA remote: DBA
227 Entering Passive Mode (10,85,7,97,16,156)
150 Opening BINARY mode data connection for DBA.
226 Transfer complete.
5 bytes sent in 3.3e-05 seconds (1.5e+02 Kbytes/s)
ftp> put DBA /Dave/SFDBA -- 将剛才建立的檔案DBA 上傳到ftp的目前目錄上并重命名為SFDBA。
local: DBA remote: /Dave/SFDBA
227 Entering Passive Mode (10,85,7,97,16,158)
150 Opening BINARY mode data connection for SFDBA.
5 bytes sent in 1.8e-05 seconds (2.7e+02 Kbytes/s)
ftp> put /home/oracle/DBA /test/SFDBA
local: /home/oracle/DBA remote: /test/SFDBA
227 Entering Passive Mode (10,85,7,97,16,163)
5 bytes sent in 2.2e-05 seconds (2.2e+02 Kbytes/s)
ftp> cd test
250 Directory changed to /test
ftp> ls
227 Entering Passive Mode (10,85,7,97,16,169)
drw-rw-rw- 1 user group 0 Aug 17 17:11 .
drw-rw-rw- 1 user group 0 Aug 17 17:11 ..
-rw-rw-rw- 1 user group 5 Aug 17 17:11 SFDBA
-rw-rw-rw- 1 user group 5508 Aug 17 16:21 sqlnet.log
Mput 示例代碼:
ftp> cd Dave
ftp> mput *
mput alert_log.txt? -- 這裡每個檔案都要确認,按Enter鍵就可以了
227 Entering Passive Mode (10,85,7,97,16,196)
150 Opening BINARY mode data connection for alert_log.txt.
712 bytes sent in 2.9e-05 seconds (2.4e+04 Kbytes/s)
mput alert_newccs.hist?
227 Entering Passive Mode (10,85,7,97,16,197)
150 Opening BINARY mode data connection for alert_newccs.hist.
9321666 bytes sent in 0.78 seconds (1.2e+04 Kbytes/s)
mput alert_newccs.log?
227 Entering Passive Mode (10,85,7,97,16,198)
150 Opening BINARY mode data connection for alert_newccs.log.
21707 bytes sent in 0.0014 seconds (1.5e+04 Kbytes/s)
ftp> ls -- 顯示目錄下的檔案
227 Entering Passive Mode (10,85,7,97,16,217)
drw-rw-rw- 1 user group 0 Aug 17 17:22 .
drw-rw-rw- 1 user group 0 Aug 17 17:22 ..
-rw-rw-rw- 1 user group 5 Aug 17 17:09 SFDBA
-rw-rw-rw- 1 user group 712 Aug 17 17:21 alert_log.txt
-rw-rw-rw- 1 user group 9321666 Aug 17 17:21 alert_newccs.hist
-rw-rw-rw- 1 user group 21707 Aug 17 17:21 alert_newccs.log
ftp> delete SFDBA --删除SFDBA 檔案
250 DELE command successful.
ftp> mdelete a* -- 批量删除檔案
mdelete alert_log.txt? -- 每個檔案都要确認
mdelete alert_newccs.hist?
mdelete alert_newccs.log?
4. 下載下傳檔案
同樣也有2個指令: get 和 mget。 Mget 使用者批量下載下傳。
格式:get [remote-file] [local-file]
mget [remote-files]
同樣,mget 是将檔案下載下傳到本地的目前目錄下。
Get 示例:
ftp> get /test/SFDBA /home/SFDBA
local: /home/SFDBA remote: /test/SFDBA
local: /home/SFDBA: Permission denied --Linux對權限控制的很嚴格,下載下傳的時候是否有對應檔案夾的寫權限
ftp> get /test/SFDBA /home/oracle/SFDBA
local: /home/oracle/SFDBA remote: /test/SFDBA
227 Entering Passive Mode (10,85,7,97,17,0)
150 Opening BINARY mode data connection for SFDBA (5 Bytes).
5 bytes received in 6.2e-05 seconds (79 Kbytes/s)
ftp> !
[oracle@Dave bdump]$ cd /home/oracle/
[oracle@Dave ~]$ ls
Dave DBA dead.letter scripts SFDBA sqlnet.log
Mget 示例:
ftp> ls
227 Entering Passive Mode (10,85,7,97,17,10)
drw-rw-rw- 1 user group 0 Aug 17 17:38 .
drw-rw-rw- 1 user group 0 Aug 17 17:38 ..
-rw-rw-rw- 1 user group 5 Aug 17 17:38 DBA
-rw-rw-rw- 1 user group 12 Aug 17 17:38 Dave
-rw-rw-rw- 1 user group 5 Aug 17 17:11 SFDBA
ftp> mget *
mget DBA? -- 每個檔案都要确認, 按回車即可
227 Entering Passive Mode (10,85,7,97,17,12)
150 Opening BINARY mode data connection for DBA (5 Bytes).
5 bytes received in 8.1e-05 seconds (60 Kbytes/s)
mget Dave?
227 Entering Passive Mode (10,85,7,97,17,13)
150 Opening BINARY mode data connection for Dave (12 Bytes).
12 bytes received in 8.3e-05 seconds (1.4e+02 Kbytes/s)
mget SFDBA?
227 Entering Passive Mode (10,85,7,97,17,14)
5 bytes received in 9e-05 seconds (54 Kbytes/s)
ftp> !
說明的地方:FTP 目前目錄下的檔案下載下傳到本地的目前目錄。
5. 斷開FTP 連接配接
Bye指令或者quit指令:中斷與伺服器的連接配接。
ftp> bye
221 Goodbye!
以上隻是Linux 終端通路ftp及上傳下載下傳的幾個簡單示例。 不過一般這幾個應該夠用了。其他功能感興趣的自己研究。