天天看點

Linux 終端通路 FTP 及 上傳下載下傳 檔案

今天同僚問我一個問題,在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及上傳下載下傳的幾個簡單示例。 不過一般這幾個應該夠用了。其他功能感興趣的自己研究。