當前位置:首頁 » 文件管理 » ftp客戶端移植

ftp客戶端移植

發布時間: 2024-10-15 00:14:59

❶ 鈥淔TP鈥濈緝鍐欏湪鑻辮涓鐨勫叿浣撳惈涔夋槸浠涔堬紵

鍦ㄨ嫳璇涓錛"ftp"鏄涓涓甯歌佺殑緙╁啓璇嶏紝瀹冧唬琛"Full Term Pregnancy"錛屼腑鏂囧嵆鈥滆凍鏈堝婂犫濄傝繖涓鏈璇涓昏佺敤浜庡尰瀛﹂嗗煙錛岀壒鍒鏄鐢熺悊瀛︽柟闈錛岃〃紺哄婂犲凡杈懼埌瀹屽叏鎴愮啛闃舵點侳TP鍦ㄨ嫳璇涓鐨勬祦琛屽害涓295錛岃〃鏄庡叾鍦ㄤ笓涓氭枃鐚鍜屾棩甯鎬氦嫻佷腑鍏鋒湁涓瀹氫嬌鐢ㄩ戠巼銆

FTP鐨勪腑鏂囪В閲婃槸瓚蟲湀濡婂狅紝鍏舵嫾闊充負"z煤 yu貓 r貓n sh膿n"錛屽湪澶勭悊涓庡瓡鏈熺浉鍏崇殑闂棰樻椂錛屽備綆浣嶆按鍥婂紩浜х殑瑙傚療銆佺背緔㈠墠鍒楅唶鍦ㄨ凍鏈堝婂犲紩浜т腑鐨勫簲鐢錛屾垨鑰呰偩縐繪嶅悗鎮h呭婂犺凍鏈堢殑鎯呭喌錛岄兘浼氱敤鍒拌繖涓緙╁啓銆備緥濡傦紝鐮旂┒鑰呬細鎺㈣ㄧ背緔㈠墠鍒楅唶瀵硅凍鏈堝瓡濡囪娓呴泴浜岄唶鍜屽瓡閰姘村鉤鐨勫獎鍝嶃

鎬葷殑鏉ヨ達紝FTP鏄涓涓涓撻棬鐢ㄤ簬鎻忚堪瀛曞囧婂犺揪鍒版垚鐔熼樁孌電殑鍖誨︽湳璇錛屽叾鍦ㄥ尰鐤楀拰縐戠爺涓鎵婕旂潃閲嶈佽掕壊銆傝頒綇錛孎TP=瓚蟲湀濡婂狅紝榪欐湁鍔╀簬鍦ㄧ浉鍏寵ㄨ轟腑鍑嗙『鐞嗚В鍜屼嬌鐢ㄨ繖涓緙╁啓銆備絾璇鋒敞鎰忥紝榪欎簺淇℃伅浠呬緵鍙傝冿紝瀹為檯搴旂敤涓璇風『淇濆噯紜鎬с

❷ 如何非同步讀取FTP

一:開發背景
由於需要對多個伺服器發布大的數據包,所以自己在LINUX用C語言,開發了一個傳送器工具。因為上傳時需要支持斷點續傳,所以自己參考ftp-rfc959和一些文章開發了這個支持斷點續傳的上傳工具。整個工具分兩部分開發的:一是支持斷點續傳的Ftp工具,包含下載和上傳功能。二是同時對多個伺服器發布不同數據包的傳送器工具。本文只是對斷點續傳的商船和下載作探討。

二:實現
其實Ftp上傳下載的實現很簡單,首先Ftp伺服器端要支持文件的定位,
然後就是通過建立的Socket用Ftp伺服器命令和伺服器交互.
有些也可以通過Socket做自己的客戶端和伺服器端,但是有些伺服器是自己能管理控制的,而且原來自己也寫過一些這樣C/S模式的工具,簡單消息的傳送接收還不錯。
但用來傳輸文件效率很低,比文件傳送協議FTP(File Transfer Protocol)差的太多。 利用Ftp的服務端可以省去伺服器端的開發,而且可以向任何開放Ftp服務的伺服器上傳送文件,可以不考慮對方安裝的
是什麼的操作系統。

三:FTP
文件傳送協議 FTP 只提供文件傳送的一些基本的服務,它使用 TCP 可靠的運輸服務。FTP 的主要功能是減少或消除在不同操作系統下處理文件的不兼容性。
FTP 使用客戶伺服器方式。
一個 FTP 伺服器進程可同時為多個客戶進程提供服務。FTP的伺服器進程由兩大部分組成:一個主進程,負責接受新的請求;另外有若干個從屬進程,負責處理單個請求。
A、通常的方式:
控制連接在整個會話期間一直保持打開,FTP 客戶所發出的傳送請求通過控制連接發送給控制進程,但控制連接並不用來傳送文件,實際用於傳輸文件的是「數據連接」。
控制進程在接收到 FTP 客戶發送來的文件傳輸請求後就創建一個「數據傳送進程」和一個「數據連接」,並將數據連接連接到「數據傳送進程」,數據傳送進程實際完成文件的傳送,在傳送完畢後關閉「數據傳送連接」並結束運行
當客戶進程向伺服器進程發出建立連接請求時,要尋找連接伺服器進程的熟知埠(21),同時還要告訴伺服器進程自己的另一個埠號碼,用於建立數據傳送連接。接著,伺服器進程用自己傳送數據的熟知埠(20)與客戶進程所提供的埠號碼建立數據傳送連接。

B、 被動模式:
FTP客戶端發出的連接請求,一般通過伺服器的21號埠建立控制連接,專門用來傳輸一些字元串命令和響應信息。控制命令通道一定是由客戶端向伺服器的連接(默認的埠是21,也可以指定埠,這要看伺服器的設置)。
PASV:通過控制通道通過發送PASV 伺服器命令到 FTP伺服器。請求建立被動模式數據連接通道。 (客戶端的命令 passive)
伺服器返回連接的信息(227 Entering Passive Mode (70,0,10,62,120,18) )地址和埠。埠=最後第二位乘256再加上最後一位(120*256+18)。(注意埠設為0的情況) 如: *f_port = atoi(port_1) * 256 + atoi(port_2);
伺服器端和客戶端身份轉換,原客戶端在本地建立監聽,監聽來自原伺服器遠端的連接請求建立數據連接通道。
四、 實現方法:
A、下載:
1、向伺服器發送「REST + 本地文件長度」,告訴伺服器,客戶端要斷點下載了。這時伺服器還不知道客戶端要下載的文件名;
2、向伺服器發送"RETR + 文件名",通知伺服器要下載的文件名,這時伺服器開始定位文件指針讀文件並發送數據。
3、客戶端定位本地文件指針偏移到文件末尾;
4、兩端的准備工作都做完了以後,客戶端創建socket,以被動或非被動方式建立數據鏈接,循環調用recv接收文件數據並追加到本地文件末尾;

B、上傳:
1、獲取伺服器上和本地要上傳文件的同名文件大小;
2、向伺服器發送「APPE + 文件名」,通知伺服器,從數據通道發送給你的數據要附加到這個文件末尾。
3、定位本地文件指針,文件指針偏移到指定位置,這個位置與FTP伺服器上文件大小相同的位置。
4、從文件指針處讀數據並發送。

C、Ftp伺服器命令
我們平時使用的命令,大多是客戶端的。伺服器端的命令可以參考下面:
命令 描述
ABOR 中斷數據連接程序 ACCT <account> 系統特權帳號
ALLO <bytes> 為伺服器上的文件存儲器分配位元組 APPE <filename> 添加文件到伺服器同名文件
CDUP <dir path> 改變伺服器上的父目錄 CWD <dir path> 改變伺服器上的工作目錄
DELE <filename> 刪除伺服器上的指定文件 HELP <command> 返回指定命令信息 LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表 MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在伺服器上建立指定目錄 NLST <directory> 列出指定目錄內容
NOOP 無動作,除了來自伺服器上的承認 PASS <password> 系統登錄密碼
PASV 請求伺服器等待數據連接 PORT <address> IP 地址和兩位元組的埠 ID PWD 顯示當前工作目錄 QUIT 從 FTP 伺服器上退出登錄
REIN 重新初始化登錄狀態連接 REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從伺服器上找回(復制)文件 RMD <directory> 在伺服器上刪除指定目錄
RNFR <old path> 對舊路徑重命名 RNTO <new path> 對新路徑重命名
SITE <params> 由伺服器提供的站點特殊參數 SMNT <pathname> 掛載指定文件結構
STAT <directory> 在當前程序或目錄上返回信息 STOR <filename> 儲存(復制)文件到伺服器上
STOU <filename> 儲存文件到伺服器名稱上 STRU <type> 數據結構(F=文件,R=記錄,P=頁面)
SYST 返回伺服器使用的操作系統 TYPE <data type> 數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統登錄的用戶名
D、伺服器返回的部分數字代碼含義
125 Data connection already open; Transfer starting.
226 Transfer complete.
227 Entering Passive Mode (127,0,0,1,4,18).
230 User xxxxx logged in.
331 Password required for xxxxx.
425 Can』t open data connection.
226 Closing data connection.
200 return a state of TYPE or MODE commond
220 connection state
五、關於Socket
關於Socket編程有很多參考資料,這里不作詳細說明
Socket是應用層與TCP/IP協議族通信的中間軟體抽象層,它是一組介面
Socket 是一個基本的通信機制Socket把復雜的TCP/IP協議族隱藏在Socket介面後面,對用戶來說,一組簡單的介面就是全部,讓Socket去組織數據,以符合指定的協議.
Socket也具有一個類似於打開文件的函數調用Socket(),該函數返回一個整型的Socket描述符,隨後的連接建立、數據傳輸等操作都是通過該Socket實現的。
常用的Socket類型有兩種:
A、流式Socket(SOCK_STREAM):流式是一種面向連接的Socket,針對於面向連接的TCP服務應用。
B、數據報式Socket(SOCK_DGRAM):數據報式Socket是一種無連接的Socket,對應於無連接的UDP服務應用。
Socket的程序是一種C/S結構,分客戶端和伺服器端。
A、客戶端
– 初始化Socket
– 連接伺服器(connect),如果連接成功,這時客戶端與伺服器端的連接就建立了
– 客戶端發送數據請求,伺服器端接收請求並處理請求,然後把回應數據發送給客戶端
– 客戶端讀取數據,最後關閉連接,一次交互結束。
B、伺服器端
- 初始化Socket
- 埠綁定(bind)
- 監聽(listen)埠
- 調用accept阻塞,等待客戶端連接
在這里我們使用的就是面向連接的流式Socket,只編寫客戶端的程序。

六、代碼:
下面僅提供一個編譯過並在使用中的函數簡單的說明其實現原理,
需要有一點C語言和Linux/UNIX的socket編程基礎即可理解。
只是建立連接和傳輸部分的一個函數。當文件傳出結束或斷開時,
可以調用檢查函數看是否成功,位元組是否正常等,如果不正常結束,
可以再次循環調用它並定為伺服器文件的位元組,繼續傳輸。
其他的控制和功能都在其他函數中實現。為移植方便使用標准C語法符合C89標准。
code:
/*****************************************************************
* FileName: uftt_ver5.c *
* Company: algorithmics china lib Co.,Ltd. *
* Author: G.L.Zhang --- zglcl008 *
* Time: [2006-12-20] *
* Description: uninterrupted file transfers tools *
*****************************************************************/

int f_file_trans(const char *ft_addr, int ft_port, const char *ft_usr,const char *ft_pwd, const char *ft_opt, const char *ft_src, char *ft_obj, int ft_flg)
{
int cmd_sock = -1;
int dat_sock = -1;
int stream_sock= -1;
int dat_port = 0;
char dat_buffer[1024*5];
struct sockaddr_in f_server;
struct sockaddr_in f_datasvr;
unsigned char *pasv_ip = NULL;
unsigned char *pasv_port = NULL;
unsigned int len_addr = 0;
long rc_size = 0;
/* long svr_file_size = 0; */
long file_size = 0;
int rc = 0;
if (ft_addr == NULL || ft_usr == NULLft_pwd == NULL ||
ft_opt == NULL || ft_src == NULL || ft_obj == NULL ||
ft_port == 0 || ft_flg < 0) {
err_quit("--- file transfers parameter error");
}
/* get ftp commomd socket */
if ((cmd_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("cmmond socket");
err_quit("--- command sock error");
}

bzero(&f_server, sizeof(f_server));
f_server.sin_family = AF_INET;
f_server.sin_port = htons(ft_port);
f_server.sin_addr.s_addr = inet_addr(ft_addr);

if (connect(cmd_sock, (struct sockaddr *)&f_server, sizeof(f_server)) < 0) {
perror("connect");
err_quit("--- command sock error");
}
rc = uftt_cmd(dat_buffer, cmd_sock, NULL);
if (rc == 220)
printf("-1- %d OK\n", rc);
else
printf("-1- %d ERR\n", rc);

rc = uftt_cmd(dat_buffer, cmd_sock,"USER %s",ft_usr);
if (rc == 331)
printf("-2- %d OK\n", rc);
else
printf("-3- %d ERR\n", rc);
rc = uftt_cmd(dat_buffer, cmd_sock,"PASS %s",ft_pwd);
if (rc == 230)
printf("-3- %d OK\n", rc);
else
printf("-3- %d ERR\n", rc);
rc = uftt_cmd(dat_buffer, cmd_sock, "TYPE I");
if (rc == 200)
printf("-41- %d OK\n", rc);
else
printf("-41- %d ERR\n", rc);
rc = uftt_cmd(dat_buffer, cmd_sock, "MODE S");
if (rc == 200)
printf("-42- %d OK\n", rc);
else
printf("-42- %d ERR\n", rc);

memset(dat_buffer, ''\0'', sizeof(dat_buffer));
rc = uftt_cmd(dat_buffer, cmd_sock, "PASV");
if (rc == 227)
printf("-5- %d OK\n", rc);
else
printf("-5- %d ERR\n", rc);
#ifdef ZGL_DEBUG
printf("-5- %d %s\n", rc, dat_buffer);
#endif
/* get passive port */
dat_port = 0;
if ((rc = get_svr_port(dat_buffer, (int *)&dat_port)) < 0)
err_quit("data stream port error");
#ifdef ZGL_DEBUG
printf("--- pasive port=[%d]\n", dat_port);
#endif
if ((dat_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("data socket");
err_quit("--- data sock error");
}
len_addr = sizeof(f_datasvr);
bzero(&f_datasvr, sizeof(f_datasvr));
rc = getsockname(cmd_sock, (struct sockaddr *)&f_datasvr, (unsigned int *)&len_addr);
f_datasvr.sin_port = htons(dat_port);
/* 0=all port or appoint port TEST OK ***
f_datasvr.sin_port = htons(dat_port);
f_datasvr.sin_port = 0;
*/
if (bind(dat_sock,(struct sockaddr *)&f_datasvr,len_addr) == -1)
err_sys("--- data sock bind error");
if (listen(dat_sock,1) == -1)
err_sys("--- data sock bind error");
rc = getsockname(dat_sock, (struct sockaddr *)&f_datasvr, (unsigned int *)&len_addr);
pasv_ip = (unsigned char *)&f_datasvr.sin_addr;
pasv_port = (unsigned char *)&f_datasvr.sin_port;
rc = uftt_cmd(dat_buffer, cmd_sock,"PORT %d,%d,%d,%d,%d,%d",pasv_ip[0],
pasv_ip[1], pasv_ip[2], pasv_ip[3], pasv_port[0], pasv_port[1]);
if (rc == 200)
printf("-6- %d OK\n", rc);
else
printf("-6- %d ERR\n", rc);

/* get RETR put STOR append APPE */
if (ft_flg == 0) {
rc = uftt_cmd(dat_buffer, cmd_sock, "STOR %s", ft_obj);
}
else if (ft_flg > 0){
rc = uftt_cmd(dat_buffer, cmd_sock, "APPE %s", ft_obj);
}
if (rc == 150)
printf("-7- %d OK\n", rc);
else
printf("-7- %d ERR\n", rc);
stream_sock = accept(dat_sock, (struct sockaddr *)&f_datasvr, (unsigned int *)&len_addr);
if (stream_sock < 0)
err_sys("--- stream socket error");
rc_size = f_put_file(stream_sock, ft_src, ft_obj, ft_flg, file_size);
/* do without ***
rc = uftt_cmd(dat_buffer, dat_sock,"QUIT");
printf("-8- %d \n", rc);
*/
close(stream_sock);
close(dat_sock);
rc = uftt_cmd(dat_buffer, cmd_sock,"QUIT");
if (rc == 226)
printf("-9- %d OK\n", rc);
else
printf("-9- %d ERR\n", rc);
close(cmd_sock);
return rc_size ;
}

❸ apache ftpserver 是主動還是被動

在做項目的時候我才發現,FTP竟然有主動FTP和被動FTP之分。FTP的設置主要是由FTP伺服器設置的。同樣的一段代碼,在本地測試的時候一切正常,但是訪問局方的FTP伺服器時卻不能傳輸數據。
下面我先簡要地自己說一下,我對主被動FTP的理解。
眾所周知,FTP是一個比較特殊的服務,它佔用了20和21兩個埠,21是命令埠,20是數據埠。顧名思義,21埠是用來接發命令,20埠用來傳遞數據。但是並不是所有的時候都用20埠來實現數據交換。
主動FTP過程大致如下:
1、客戶端啟用埠N(N>1024,因為1024之前為特殊埠,不能手動佔用,把N當作客戶端的命令埠)和埠N+1(客戶端的數據埠),從埠N向伺服器的21埠發送PORT命令,其中PORT命令包含客戶端IP和數據埠
2、伺服器接收到客戶端的PORT命令後,並得知客戶端用N+1埠監聽數據。接著,伺服器向客戶端發送ACK應答(ACK與TCP通信中的連接握手一樣)
3、伺服器用20埠再向客戶端的N+1埠發送數據請求
4、客戶端向伺服器端發送數據ACK應答
以上就是主動FTP的大致過程,但是數據請求的發起方是伺服器,如果此時客戶端的防火牆啟用了高端埠的屏蔽的話,有可能會發生阻塞,所以主動FTP的情況下,客戶端最好把防火牆關閉了。

被動FTP過程大致如下:
1、客戶端啟用埠N(同樣的N>1024)和N+1,N用作命令埠,N+1用作數據埠。然後客戶端向伺服器端發送PASV請求,告訴伺服器端,這是被動FTP請求
2、伺服器端接收到PASV請求後,啟動一個M(同樣>1024)埠當作數據端,並發送PORT M到客戶端
3、客戶端得到伺服器端的數據埠後,再由埠N+1向伺服器的M埠發起數據請求
4、伺服器端通過N埠向客戶端的N+1埠發送ACK應答
以上是被動FTP的大致過程,與主動FTP請求不同,請求的發起方是客戶端,這樣客戶端就不會為防火牆的問題感到煩惱,但是同樣道理,伺服器端的埠就會有了限制。

所以,一般情況下。伺服器端為了方便管理,一般採用被動FTP方式連接。當然客戶端可以通過ftp -d host port命令向伺服器發送請求,可以看出到底用的是主動FTP還是被動FTP。

這次我就遇到了這樣的問題,寫FTP上傳下載代碼時,把網上的東西過來,很順利地在本地測試通過了。但是鏈接到局方的伺服器的時候,怎麼也不能上傳和下載,而且不會拋出異常。後來我也是試著添了一行代碼,結果測通了,代碼如下:
FtpDefine.ftpServer.enterLocalPassiveMode();
怎麼樣,看起來很簡單吧。因為寫代碼默認情況下是主動FTP,必須通過enterLocalPassiveMode()方法設置成被動FTP才能順利上傳下載。

另外還有很多問題需要考慮,比方說代碼的可擴展性、可移植性等等。就拿這次的代碼來說,我測試的時候客戶端和伺服器端都是Windows Xp系統,而且FTP伺服器設置的是主動FTP。但是真正用的時候,客戶端是Linux系統,伺服器雖然是Windows的,但是他們沒有用Windows自帶的FTP,而是用的軟體,用法與Linux系統的相似,所以因為這個問題,我配錯了配置文件,結果在代碼中切換伺服器目錄時,總是報錯。所以再此,我提醒大家,萬事小心謹慎!希望我寫的這些會對大家有點幫助。如果覺得看不懂的話,請參考我下面列出的鏈接地址,那裡有更詳細的說明。

❹ FP和TP是什麼程序

ftp
文件傳輸協議
FTP(File Transfer Protocal),是文件傳輸協議的簡稱。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。用戶可以通過它把自己的PC機與世界各地所有運行FTP協議的伺服器相連,訪問伺服器上的大量程序和信息。

FTP(File Transfer Protocol)

FTP的作用

正如其名所示:FTP的主要作用,就是讓用戶連接上一個遠程計算機(這些計算機上運行著FTP伺服器程序)察看遠程計算機有哪些文件,然後把文件從遠程計算機上拷到本地計算機,或把本地計算機的文件送到遠程計算機去。

FTP工作原理

拿下傳文件為例,當你啟動FTP從遠程計算機拷貝文件時,你事實上啟動了兩個程序:一個本地機上的FTP客戶程序:它向FTP伺服器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP伺服器程序,它響應你的請求把你指定的文件傳送到你的計算機中。FTP採用「客戶機/伺服器」方式,用戶端要在自己的本地計算機上安裝FTP客戶程序。FTP客戶程序有字元界面和圖形界面兩種。字元界面的FTP的命令復雜、繁多。圖形界面的FTP客戶程序,操作上要簡潔方便的多。

簡單地說,支持FTP協議的伺服器就是FTP伺服器,下面介紹一下什麼是FTP協議(文件傳輸協議)

一般來說,用戶聯網的首要目的就是實現信息共享,文件傳輸是信息共享非常重要的一個內容之一。Internet上早期實現傳輸文件,並不是一件容易的事,我們知道 Internet是一個非常復雜的計算機環境,有PC,有工作站,有MAC,有大型機,據統計連接在Internet上的計算機已有上千萬台,而這些計算機可能運行不同的操作系統,有運行Unix的伺服器,也有運行Dos、Windows的PC機和運行MacOS的蘋果機等等,而各種操作系統之間的文件交流問題,需要建立一個統一的文件傳輸協議,這就是所謂的FTP。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議,這樣用戶就可以把自己的文件傳送給別人,或者從其它的用戶環境中獲得文件。

與大多數Internet服務一樣,FTP也是一個客戶機/伺服器系統。用戶通過一個支持FTP協議的客戶機程序,連接到在遠程主機上的FTP伺服器程序。用戶通過客戶機程序向伺服器程序發出命令,伺服器程序執行用戶所發出的命令,並將執行的結果返回到客戶機。比如說,用戶發出一條命令,要求伺服器向用戶傳送某一個文件的一份拷貝,伺服器會響應這條命令,將指定文件送至用戶的機器上。客戶機程序代表用戶接收到這個文件,將其存放在用戶目錄中。

在FTP的使用當中,用戶經常遇到兩個概念:"下載"(Download)和"上載"(Upload)。"下載"文件就是從遠程主機拷貝文件至自己的計算機上;"上載"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上載(下載)文件。

使用FTP時必須首先登錄,在遠程主機上獲得相應的許可權以後,方可上載或下載文件。也就是說,要想同哪一台計算機傳送文件,就必須具有哪一台計算機的適當授權。換言之,除非有用戶ID和口令,否則便無法傳送文件。這種情況違背了Internet的開放性,Internet上的FTP主機何止千萬,不可能要求每個用戶在每一台主機上都擁有帳號。匿名FTP就是為解決這個問題而產生的。

匿名FTP是這樣一種機制,用戶可通過它連接到遠程主機上,並從其下載文件,而無需成為其注冊用戶。系統管理員建立了一個特殊的用戶ID,名為anonymous, Internet上的任何人在任何地方都可使用該用戶ID。

通過FTP程序連接匿名FTP主機的方式同連接普通FTP主機的方式差不多,只是在要求提供用戶標識ID時必須輸入anonymous,該用戶ID的口令可以是任意的字元串。習慣上,用自己的E-mail地址作為口令,使系統維護程序能夠記錄下來誰在存取這些文件。

值得注意的是,匿名FTP不適用於所有Internet主機,它只適用於那些提供了這項服務的主機。

當遠程主機提供匿名FTP服務時,會指定某些目錄向公眾開放,允許匿名存取。系統中的其餘目錄則處於隱匿狀態。作為一種安全措施,大多數匿名FTP主機都允許用戶從其下載文件,而不允許用戶向其上載文件,也就是說,用戶可將匿名FTP主機上的所有文件全部拷貝到自己的機器上,但不能將自己機器上的任何一個文件拷貝至匿名FTP主機上。即使有些匿名FTP主機確實允許用戶上載文件,用戶也只能將文件上載至某一指定上載目錄中。隨後,系統管理員會去檢查這些文件,他會將這些文件移至另一個公共下載目錄中,供其他用戶下載,利用這種方式,遠程主機的用戶得到了保護,避免了有人上載有問題的文件,如帶病毒的文件。

作為一個Internet用戶,可通過FTP在任何兩台Internet主機之間拷貝文件。但是,實際上大多數人只有一個Internet帳戶,FTP主要用於下載公共文件,例如共享軟體、各公司技術支持文件等。 Internet上有成千上萬台匿名FTP主機,這些主機上存放著數不清的文件,供用戶免費拷貝。實際上,幾乎所有類型的信息,所有類型的計算機程序都可以在Internet上找到。這是Internet吸引我們的重要原因之一。

匿名FTP使用戶有機會存取到世界上最大的信息庫,這個信息庫是日積月累起來的,並且還在不斷增長,永不關閉,涉及到幾乎所有主題。而且,這一切是免費的。

匿名FTP是Internet網上發布軟體的常用方法。Internet之所以能延續到今天,是因為人們使用通過標准協議提供標准服務的程序。像這樣的程序,有許多就是通過匿名FTP發布的,任何人都可以存取它們。

Internet中的有數目巨大的匿名FTP主機以及更多的文件,那麼到底怎樣才能知道某一特定文件位於哪個匿名FTP主機上的那個目錄中呢?這正是Archie伺服器所要完成的工作。Archie將自動在FTP主機中進行搜索,構造一個包含全部文件目錄信息的資料庫,使你可以直接找到所需文件的位置信息。

傳輸文件的一般步驟如下:

1.在本地電腦上登陸到國際互聯網.

2.搜索有文件共享主機或者個人電腦(一般有專門的FTP伺服器網站上公布的,上面有進入該主機或個人電腦的名稱,口令和路徑).

3.當與遠程主機或者對方的個人電腦建立連接後,用對方提供的用戶名和口令登陸到該主機或對方的個人電腦.

4.在遠程主機或對方的個人電腦登陸成功後,就可以上傳你想跟別人分享的東東或者下載別人授權共享的東東(這里的東東是指能放到電腦里去又能在顯示屏上看到的東東).

5.完成工作後關閉FTP下載軟體,切斷連接.

為了實現文件傳輸,用戶還要運行專門的文件傳輸程序,比如網際快車就有這方面的功能,其它還有很多專門的FTP傳輸軟體,FlashFxp為其中的傑出軟體。有興趣的網友可以試試其他的軟體,如LeapFTP總歸各有各的特色.

❺ 網站鏡像如何建立

鏡像網站是將一個完全相同的站點放到幾個伺服器,分別有自己的URL,在這些伺服器上互為鏡像網站。它和主站並沒有太大差別,或者可算是為主站作的後備措施。有了鏡像網站的好處是:如果不能對主站作正常訪問(如某個伺服器死掉或出了意外),但仍能通過其它伺服器正常瀏覽。相對來說主站在速度等各方面比鏡像站點略勝一籌。
鏡像就是做一個和你的站一模一樣的站, 也就是說, 就跟鏡子一樣嘛. 一般是個人網站的站長為自己的站做一個備份, 也就是說, 一個站由於流量或其它原因訪問不到時, 人們可以去另一個一模一樣的站看. 這個站還可以起到分流, 減少伺服器壓力的作用. 不過, 這些都是由於個人網站的伺服器不能接受太多的訪問量而採取的辦法. 商業網站一般不用這樣的辦法. 因為用戶要記兩個域名, 內容要上傳兩次, 要隨時保持兩個地方一致, 內容一多非常麻煩.
如果是別人把自己的站也這樣原樣做一份放在網上, 我在想, 網站的主人肯定是不能容忍的, 可以用搜索引擎找到這樣的站, 現在這樣搞的人已經比較少了, 在2000年, 我們經常會發現有人這樣照抄人家的站. 所以, 哪時候很多網站都加了一句嚴禁建立鏡像.

一步一步教你網站同步鏡像

1.介紹

現在的網站隨著訪問量的增加,單一伺服器無法承擔巨大的訪問量,有沒有什麼方便快捷的方式解決這個問題呢,答案是」有」!比如建立伺服器群,進行均衡負載.
但是如果要解決像電信網通這樣的互訪問題(中國網民的悲哀..),這個解決辦法就無能為了了!
要解決這個問題最方便快捷的方式就是建立鏡像網站!由訪問者自己選擇適合自己網路的速度最快的網站!這樣即可以解決線路問題,又可以解決訪問量問題!

2.網站同步的數據分類

網站數據基本分為兩類
一類是文件,比如HTML,ASP,php等網頁文件,或者RAR,ZIP,RM,AVI等可下載文件!
要實現他們的同步很簡單,用FTP同步軟體就可以了!至於哪幾個我會在後面做詳細介紹.

一類是資料庫數據文件,比如MySQL,SQL Server等等!
資料庫同步的方法也很多,最簡單的辦法只是將資料庫目錄同步一下就OK了!
在後面我也會做詳細講解!

3.網站文件的同步

在這里用到的主要工具就是FTP,網站文件同步分兩種情況,一種是本地到遠程,一種是遠程到遠程(FXP)!第一種不用說了,第二種遠程到遠程即FXP,支持它的軟體也很多,但是真正適合多網站同步鏡像的卻不多!
下面我介紹幾個我認為不錯的軟體!(PS如果熟悉FTP命令,完全可以自己製作一個批處理文件時間的)
1.首先我要推薦的是國產的FTP軟體」網路傳神」,功能非常強大,特別是在網站的同步鏡像方面,可惜的是,這款非常經典的軟體已經不再更新了,最後更新時間是2003年3月,最後一個版本是3.12!雖然如此還是非常好用的!下面是一段官方的簡介

網路傳神完全吸收了Cuteftp和UpdataNow的全部功能,並且增加了其他軟體沒有的多項功能:支持網站互傳;支持網站同步(UPDATA NOW);支持後台上傳(多線程上傳多個文件);可同時打開多個站點;多站點計劃上傳功能,支持鏡像站點;支持宏操作支持計劃操作;支持文件高級比較上傳;支持目錄隱藏過濾(為用ForntPage作主頁的朋友帶來福音);伺服器自動識別功能;資源管理器瀏覽方式;可以自定義命令;支持RFC959標准具有更好的穩定性;完備的信息返回機制及錯誤監控機制完整的中文幫助。

2.第二款是由ReGet同一開發公司製作的專用於網站同步的軟體」WebSynchronizer」,用這款軟體,你才會體驗到網站同步的方便快捷,簡單容易.最新版本是1.3.62, 網上能找到XX的最後版本是1.1版!下面是一段簡介

檔案同步化工具 - WebSynchronizer,由知名續傳軟體 ReGet 之軟體出版公司所推出,是網站同步化、檔案鏡像、檔案備份的絕佳工具,可以執行下列主要工作:1) 本機資料夾及遠程資料夾的同步化;2) 兩台遠程計算機中的資料夾同步化;3) 兩個本機資料之同步化。

3.其他還有一些軟體如同步快梭(AutoSyncFTP),也能實現簡單的網站同步,不過,這款軟體非常不穩定,而且2001年就已經停止開發.所以,不用考慮了!還有上次有朋友提到的SiteMirro,由於網上找不到可以用的版本,所以沒有辦法測試!

4.網路傳神網站同步鏡像使用傻瓜指南
上次在網路技術版已經發過一個簡單的使用方法介紹,如果嫌我羅嗦(o(_)o),大家可以參考那篇文章
httpbbs.et8.netbbsshowthread.phpt=650129

第一次運行網路傳神的時候,它會讓你選擇」完全模式」和」啟動模式」,要使用網站同步必須選擇」完全模式」.

進入主界面你會發現這個軟體非常像FlashGet,要使用網站同步功能,點擊軟體左下角的」FTP客戶端」.

現在你要做的就是添加你的鏡像母站和需要鏡像的網站文件-站點管理,在裡面添加你需要同步的幾個的FTP伺服器,下面我將介紹具體設置(主要是鏡像母站的設置)

母站設置最重要的地方就是」比較目錄(網站同步)」

1.拖動傳送
就是手動拖動傳送時候的傳送方式,非拖動方式不受影響,因為母站的更新基本上是從本地目錄進行的,所以建議這里選擇第二項」只上傳不同的文件」,鏡像站點這里可以忽略
2.磁碟比較設置
這個功能非常有用,可以通過文件長度和文件日期進行文件差異對比.

你還可以設置本地目錄過濾和伺服器目錄過濾,非常靈活!
好了,添加好母站和鏡像站之後,我們來設置同步

如果是添加鏡像站,則會跳出下面的母站選擇窗口

設置好多個鏡像站點之後,返回主界面就可以進行網站同步了

注意事項:
一般不要改動鏡像站點前面的「對鉤」標志,因為鏡像站點同步的原理是「根據主站點的同步信息更新鏡像站點」,如果景象站點沒有更新那麼必須將該鏡像站點單獨同步。
注意一般應該「選項窗口」-〉「FTP客戶端」-〉「計劃」中的「最大連接個數」和「最大線程個數」一般不要改動保持為「1」。
如果同步時某個站點出錯同步沒有完全完成只需按「計劃」窗口中的 按鈕單獨執行某個站點的傳送即可。

再介紹一下網站鏡像同步中必要的功能,定時同步,這樣你就只要做好母站的更新,其他的讓網路傳神幫你完成
點擊設置

進入網路傳神的選項設置窗口,選中FTP客戶端中的定時同步

定時下載:在指定的時段內下載文件。
定時上傳:在指定的時段內用網站同步的方法進行上傳。
開始時間:如果要使用定時方式必須設置此項,在設置的時間中會自動開始所有設置為計劃的站點。
停止時間:如果設置此項則當系統時間大於停止時間時自動停止所有設置為計劃的站點。

注意:定時上傳種沒有「停止時間」選項,網站同步完成後會自動停止,同時網站同步同一時間只能運行一次。

網路傳神還有很多為便於同步鏡像設置的功能,大家實際使用中去體會吧!

5. Web Synchronizer 網站同步鏡像使用傻瓜指南
Web Synchronizer功能非常強大,不單單是網站同步,還可以進行本地目錄同步,本地到遠程同步,功能方面遠勝過傳神,不過,國內好像沒有漢化版,對於一些對英文感冒的朋友用起來會不太舒服,希望CCF里的漢化高手能將他中文化!

開始運行程序,老外的軟體就是智能,一打開這個軟體就會有一個同步向導跳出來!

在這里,你也看出來了吧,這個軟體只支持兩個目錄間的同步.不過,我們可以創建多個項目來解決這個問題!具體我在後面介紹!這里,我們來看看如何建立兩個遠程目錄的同步!
選擇第二項,進入下一個選擇框

網站同步當然是選擇第一項了!再進入下一步,要你選擇同步的第一個伺服器,建議在這里servers list,先編輯好需要同步的幾個FTP

同步方式設置說明
第一項的意思是上傳下載所有改變的文件
第二項的意思是不改變文件夾內容,只下載新的文件

點擊下一步進行第二個伺服器設置,方法和第一個一樣!
設置完成後,你還可以修改任務名稱!
我覺得這點就是這個軟體非常優秀的地方,以任務的方式進行管理.非常方便!

OK,現在我們就可以看到他的主界面了!

還有一點要提,他的計劃任務更能也很強大,在這里我就不再多說了!用過才知道他的強大!

有朋友會說,我要進行兩個以上的網站同步怎麼辦
很簡單,再多建幾個任務就可以了,要鏡像多少網站都沒有問題!
這個軟體的網站同步鏡像可以非常靈活,比如可以本地-遠程,然後再遠程-遠程!或者本地-遠程1,本地-遠程2,遠程1-遠程2,任何情形下的同步都可以完成!

熱點內容
ftp物理公司 發布:2024-10-15 03:09:44 瀏覽:232
廚房陶瓷怎麼配置 發布:2024-10-15 02:57:34 瀏覽:25
存儲器設備廠家 發布:2024-10-15 02:53:55 瀏覽:994
編譯載入和運行載入 發布:2024-10-15 02:43:53 瀏覽:344
android照相機源碼 發布:2024-10-15 02:43:52 瀏覽:590
qq相冊密碼是什麼梗 發布:2024-10-15 02:14:05 瀏覽:785
錄音寶怎麼上傳文件 發布:2024-10-15 02:10:59 瀏覽:697
銀行登錄密碼忘了怎麼辦 發布:2024-10-15 01:25:33 瀏覽:842
電腦游戲要解壓怎麼辦 發布:2024-10-15 01:24:48 瀏覽:560
幸運拼源碼 發布:2024-10-15 01:11:59 瀏覽:441