FTP服务器搭建及操作(一)
FTP服务器搭建及操作(一)
搭建方法参照(windows):http://www.cnblogs.com/lidan/archive/2012/06/04/2535103.html
打开浏览器,输入你的IP,ftp://xxx.xxx.xxx.xxx。自己的FTP搭建成功!
FTP 是一种数据传输协议 (File Transfer Protocol),它的连接模式有两种: 主动模式( active )和被动模式( passive )。
以下说明FTP的连接是怎样建立的:
1. 在 active 模式下 (一般预设的模式):
FTP client 开启一个随机选择的TCP port 呼叫 FTP server 的 port 21请求建立连接。当完成 Three-Way Handshake 之后,连接就成功建立,但这仅是命令通道的建立。
当两端需要传送数据资料的时候,client 透过命令通道用一个 port command 告诉 server ,client可以用另一个TCP port 做数据通道。
然后 server 用 port 20 和刚才client 所告知的 TCP port 建立数据连接。注意:连接方向是从server 到 client 的,TCP 分组中会有一个 SYN flag。
然后 client 会返回一个带 ACK flag的确认分组,并完成另一次的 Three-Way Handshake 过程。这时候,数据连接才能成功建立。开始数据传送。
2. 在 passive 模式下:
FTP client 开启一个随机选择的TCP port 呼叫 FTP server 的 port 21请求建立连接,完成命令通道的建立。
当两端需要传送数据的时候,client 通过命令通道发送一个 PASV command 给server,要求进入 passive 传输模式。
然后 server 像上述的正常模式之第 2 步骤那样,挑一个TCP port ,并用命令通道告诉 client。
然后 client 用另一个TCP port 呼叫刚才 server 告知的 TCP port 来建立数据通道。此时分组中带有 SYN flag。
server 确认后回送一个 ACK 分组。并完成所有握手过程、成功建立数据通道。
开始数据传送。 在实际使用中, active mode 用来登入一些架设在主机上没有安装防火墙的 FTP server,或是架设在 client side 的 FTP server! Passive mode (简称 PASV)用来登陆一些架设于防火墙保护下而又是开设于主机上的 FTP server!
ftp_pasv — 返回当前 FTP 被动模式是否打开
PHP操作实例
<?php
$ftp_server = "192.168.0.100";//"ftp.sun.com"
$ftp_user_name = "Admin";
$ftp_user_pass = "123456";
$source_file = 'test.txt';
//$destination_file = 'test/readme.txt' ;
$destination_file = 'readme.txt' ;
// set up basic connection
$conn_id = ftp_connect ( $ftp_server,21 );
// login with username and password
$login_result = ftp_login ( $conn_id , $ftp_user_name , $ftp_user_pass );
//被动模式打开 or 关闭
$pasv = ftp_pasv($conn_id,true );
print_r( "被动模式结果 ".$pasv." \r\n" );
//获取远端系统类型
if ( $type = ftp_systype ( $conn_id )) {
echo " powered by $type \n" ;
} else {
echo "Couldn't get the systype" ;
}
// check connection
if ((! $conn_id ) || (! $login_result )) {
echo "FTP connection has failed!" ;
echo "Attempted to connect to $ftp_server for user $ftp_user_name " ;
exit;
} else {
echo "Connected to $ftp_server , for user $ftp_user_name \r\n" ;
}
//为要上传到 FTP 服务器的文件分配空间。
ftp_alloc($conn_id,"160",$response);
echo $response."\r\n";
//将当前目录改为目标文件
echo "当前目录更改 ".ftp_chdir ( $conn_id , "test" )."\r\n";
//删除服务端文件
if (ftp_size($conn_id,$destination_file)){
echo "找到目录了\r\n";
echo "删除文件 ".ftp_delete($conn_id,$destination_file)."\r\n";
}
// upload the file
$upload = ftp_put ( $conn_id , $destination_file , $source_file , FTP_ASCII );
// check upload status
if (! $upload ) {
echo "FTP upload has failed!" ;
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file\r\n " ;
}
//返回当前目录内容
print_r("当前目录 :");
print_r( ftp_nlist( $conn_id,'.' ));
// close the FTP stream
ftp_close ( $conn_id );
?>
注意事项
连接地址一般为ip、解析的地址;
上传文件出错请检查当前账户是否有写权限;
FTP操作类
PHP FTP 函数
PHP:指示支持该函数的最早的 PHP 版本。
函数 描述 PHP
ftp_alloc() 为要上传到 FTP 服务器的文件分配空间。 5
ftp_cdup() 把当前目录改变为 FTP 服务器上的父目录。 3
ftp_chdir() 改变 FTP 服务器上的当前目录。 3
ftp_chmod() 通过 FTP 设置文件上的权限。 5
ftp_close() 关闭 FTP 连接。 4
ftp_connect() 打开 FTP 连接。 3
ftp_delete() 删除 FTP 服务器上的文件。 3
ftp_exec() 在 FTP 上执行一个程序/命令。 4
ftp_fget() 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中。 3
ftp_fput() 上传一个已打开的文件,并在 FTP 服务器上把它保存为一个文件。 3
ftp_get_option() 返回当前 FTP 连接的各种不同的选项设置。 4
ftp_get() 从 FTP 服务器下载文件。 3
ftp_login() 登录 FTP 服务器。 3
ftp_mdtm() 返回指定文件的最后修改时间。 3
ftp_mkdir() 在 FTP 服务器创建一个新目录。 3
ftp_nb_continue() 连续获取/发送文件 (non-blocking)。 4
ftp_nb_fget() 从FTP服务器上下载文件并保存到本地已经打开的文件中(non-blocking) 4
ftp_nb_fput() 上传已打开的文件,并在FTP服务器上把它保存为文件(non-blocking)。 4
ftp_nb_get() 从 FTP 服务器下载文件 (non-blocking)。 4
ftp_nb_put() 把文件上传到服务器 (non-blocking)。 4
ftp_nlist() 返回指定目录的文件列表。 3
ftp_pasv() 返回当前 FTP 被动模式是否打开。 3
ftp_put() 把文件上传到服务器。 3
ftp_pwd() 返回当前目录名称。 3
ftp_quit() ftp_close() 的别名。 3
ftp_raw() 向 FTP 服务器发送一个 raw 命令。 5
ftp_rawlist() 返回指定目录中文件的详细列表。 3
ftp_rename() 重命名 FTP 服务器上的文件或目录。 3
ftp_rmdir() 删除 FTP 服务器上的目录。 3
ftp_set_option() 设置各种 FTP 运行时选项。 4
ftp_site() 向服务器发送 SITE 命令。 3
ftp_size() 返回指定文件的大小。 3
ftp_ssl_connect() 打开一个安全的 SSL-FTP 连接。 4
ftp_systype() 返回远程 FTP 服务器的系统类型标识符。 3
FTP服务器搭建及操作(一)的更多相关文章
- ftp服务器搭建及简单操作
ftp服务器搭建及简单操作 1. 添加一个新用户,使用名useradd testftp,然后使用passwd testftp对新添加的用户设置密码(这里设置为“1234567”). 2. 安装ftp服 ...
- Linux CentOS 6.5 下 vsftpd ftp服务器搭建
Linux CentOS 6.5 下 vsftpd ftp服务器搭建 by:授客 QQ:1033553122 操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.ce ...
- FTP-Linux中ftp服务器搭建
一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...
- Linux之匿名FTP服务器搭建
FTP(File Transfer Protocol)是在服务器与客户端进行文件传输的一种传输协议.本次介绍的是vsftpd的软件体验ftp服务. FTP服务器默认情况下依据用户登录情况分为三种不同的 ...
- FTP服务器搭建及自动备份设置
本次随笔内容主要是FTP服务器搭建. 其实去年十月服务器就搭建完了.当时写了个PPT保存了一下,准备以后写博客,结果时隔快一年我自己都快要看不懂我自己写的PPT了 ( = o = ) 不过还是尽量尝 ...
- Linux中ftp服务器搭建
一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...
- 记一次ftp服务器搭建走过的坑
记一次ftp服务器搭建走过的坑 1.安装 ①下载 wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz #要FQ ②解压 ta ...
- 《Linux下FTP服务器搭建及FTP使用》
.LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...
- (转)【Java FTP及FTP服务器搭建】
转至 http://blog.csdn.net/studyvcmfc/article/details/8147052 目录(?)[+] -[Java FTP及FTP服务器搭建] 一:本文采用apach ...
随机推荐
- es6 module + webpack
其实在之前本人就看了 es6 里面的一部分内容,当然是阮一峰大神的 ECMAScript 6 入门. 最近闲来无事又来看下,其中 Module 的语法 这章时候,用里面代码跑的时候,理所当然的报错 S ...
- 自动生成数学题型三 (框架Struts2)题型如 a+b=c(a、b、c都为分数)
1. 约分分数 1.1 保留质数 /** * 将数值放入到fraction数组中 * @param fen 简要放的 int类型数值 */ public void fenshu(int fen) { ...
- nodejs 后台服务启动
最近一个项目微信小程序,需要写个小型的后端程序处理聊天通讯记录保存,主要是功能是组建群聊天室,所以用node写了个websocket服务... 但是终端连接到服务器,运行 node server.js ...
- linux sed命令就是这么简单
概述 sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作.sed是按行来处理文本内容的.在shell中,使用sed来批量修改文本内容是非常方便的. sed命令的选项 ...
- SQL Server 跨库复制表方法小笔记
insert into tableA (column1,column2.....) SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=127. ...
- 【割点】【割边】tarjan
洛谷割点模板题--传送门 割边:在连通图中,删除了连通图的某条边后,图不再连通.这样的边被称为割边,也叫做桥.割点:在连通图中,删除了连通图的某个点以及与这个点相连的边后,图不再连通.这样的点被称为割 ...
- javascript中json对象json数组json字符串互转及取值
今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下: 1.json类型的字符串转换为json对象及取值 var jsonString = '{"bar" ...
- [进程管理]Load和CPU利用率是如何算出来的
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.penglixun.com/tech/system/how_to_ca ...
- 优化UI控件 【译】
翻译自:https://unity3d.com/cn/learn/tutorials/topics/best-practices/optimizing-ui-controls?playlist=300 ...
- 软件开发的一些"心法"
从事软件开发也有好几年了,和一开始那个懵懵懂懂的小菜鸟相比,自己也感觉到了一些变化. 也许是熟能生巧, 趟过很多坑,但核心的绝不是这些细节的东西. 打个比方,如果说对某种语言的特性和技巧的掌握属于身法 ...