简介
在信息化高速发展的今天,服务器每天都会与其它单机交换大量文件数据,文件传输对大家来说是家常便饭。因此,其重要性就不言而喻了。文件传输方式各有不同,选择一款合适自己的文件传输工具,在工作中能起到事半功倍的效果。节省资源、方便传输、提升工作效率、加密保护等等。因此,很多文件传输工具应运而生,例如:NC、FTP、SCP、NFS、SAMBA、RSYNC/SERVERSYNC等等,每种方式都有自己的特点。本文将首先简单介绍一下文件传输的基本原理,然后,详细介绍类unix/linux、windows平台上常用文件传输方式,并针对它们各自的特点进行比较,让读者对文件传输方式有比较详尽地了解,从而能够根据不同的需要选择合适的文件传输方式。
文件传输原理
文件传输是信息传输的一种形式,它是在数据源和数据宿之间传送文件数据的过程,也称文件数据通信。操作系统把文件数据提取到内存中做暂存,再复制到目的地,加密就是在文件外加了一个壳,文件本身还是一个整体,复制只是把这个整体转移到其它地方,不需要解密,只有打开压缩包时才需解密。一个大文件作为一个数据整体,是不可能瞬间从一台主机转移到其它的主机,传输是一个持续的过程,但不是把文件分割了,因此,如果在传输的过程中意外中断,目标路径中是不会有传输的文件,另外,如果传输的是多个文件,那么,这些文件是按顺序分别传输,如果中间中断,则正在传输的文件会传输失败,但是,之前已经传完的文件传输成功(如果传输的是文件压缩包,那么,不管里面有几个文件,它本身被视为一个文件)。
通常我们看到的 NC、FTP、SCP、NFS 等等,都是可以用来传输文件数据的工具,下面我们将详细介绍主要文件传输工具的特点以及用法。
NETCAT
在网络工具中有“瑞士军刀”的美誉,它功能强大,作为网络工具的同时,它传输文件的能力也不容小觑。
常用参数:
简单用法举例
1.端口扫描21-24(以IP192.168.2.34为例)。
nc -v -w 2 192.168.2.34 -z 21-24nc: connect to 192.168.2.34 port 21 (tcp) failed: Connection refused
Connection to 192.168.2.34 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.2.34 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.2.34 port 24 (tcp) failed: Connection refused
2.从192.168.2.33拷贝文件到192.168.2.34。
在192.168.2.34上:
nc -l 1234 > test.txt在192.168.2.33上:
nc 192.168.2.34 < test.txt3.用nc命令操作memcached。
存储数据:
printf “set key 0 10 6rnresultrn” |nc 192.168.2.34 11211获取数据:
printf “get keyrn” |nc 192.168.2.34 11211删除数据:
printf “delete keyrn” |nc 192.168.2.34 11211查看状态:
printf “statsrn” |nc 192.168.2.34 11211模拟top命令查看状态:
watch “echo stats” |nc 192.168.2.34 11211清空缓存:
printf “flush_allrn” |nc 192.168.2.34 11211 #谨慎操作,清空了缓存就没了SCP(安全拷贝 secure copy)
介绍
SCP 命令的用法和 RCP 命令格式非常类似,区别就是 SCP 提供更安全保障,SCP 在需要进行验证时会要求你输入密码或口令,一般推荐使用 SCP 命令,因为它比 RCP 更安全。SCP 命令使用 SSH 来传输数据,并使用与 SSH 相同的认证模式,提供同样的安全保障,SSH 是目前较可靠得,为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SCP 是基于 SSH 的应用,所以进行数据传输的机器上必须支持 SSH 服务。
特点
SCP 类似于RCP, 它能够保留一个特定文件系统上的文件属性,能够保留文件属性或者需要递归的拷贝子目录。
SCP它具备更好文件传输保密性。与此同时,付出的代价就是文件传输时需要输入密码而且涉及到 SSH 的一些配置问题,这些都影响其使用的方便性,对于有特定需求的用户,是比较合适的传输工具。
常用示例
使用 SCP 命令,需要输入密码,如果不想每次都输入,可以通过配置 SSH,这样在两台机器间拷贝文件时不需要每次都输入用户名和密码:
生成 RSA 类型的密钥:
上述命令生成 RSA 类型的密钥。在提示密钥的保存路径和密码时,可以直接回车使用默认路径和空密码。这样,生成的公共密钥保存/.ssh/id_rsa.pub,私有密钥保存在 /.ssh/id_rsa 。然后把这个密钥对中的公共密钥的内容复制到要访问的机器上的 /.ssh/authorized_keys 文件中。这样,下次再访问那台机器时,就不用输入密码了。
scp可以在 2个 linux 主机间复制文件
命令基本格式:
scp [可选参数] file_source file_target从本地复制到远程(如下四种方式):
scp local_file remote_username@remote_ip:remote_folder scp local_file remote_username@remote_ip:remote_file scp local_file remote_ip:remote_folder scp local_file remote_ip:remote_file注:第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名。
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名。
从远程复制到本地:
注:从远程复制到本地,只要将从本地复制到远程的命令的后2个参数 调换顺序 即可
scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/i.mp3 scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/Rsync
Rsync是linux/Unix文件同步和传送工具。用于替代rcp的一个工具,rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时rsync server会开一个873端口,等待客户端去连接。连接时rsync server会检查口令是否相符,若通过口令查核,则可以通过进行文件传输,第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份。
安装方式:
注:可以使用每个发行版本自带的安装包管理器安装。
sudo apt-get install rsync #在debian、ubuntu 等在线安装方法; slackpkg install rsync #Slackware 软件包在线安装; yum install rsync #Fedora、Redhat 等系统安装方法;源码编译安装:
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz tar xf rsync-3.0.9.tar.gz cd rsync-3.0.9 ./configure && make && make install参数介绍:
rsync六种不同的工作模式:
1.拷贝本地文件,将/home/coremail目录下的文件拷贝到/cmbak目录下。
rsync -avSH /home/coremail/ /cmbak/2.拷贝本地机器的内容到远程机器。
rsync -av /home/coremail/ 192.168.11.12:/home/coremail/3.拷贝远程机器的内容到本地机器。
rsync -av 192.168.11.11:/home/coremail/ /home/coremail/4.拷贝远程rsync服务器(daemon形式运行rsync)的文件到本地机。
rsync -av root@172.16.78.192::www /databack5.拷贝本地机器文件到远程rsync服务器(daemon形式运行rsync)中。当DST路径信息包含”::”分隔符时启动该模式。
rsync -av /databack root@172.16.78.192::www6.显示远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
rsync -v rsync://192.168.11.11/datarsync配置文件说明:
cat/etc/rsyncd.conf #内容如下 port = 873 #端口号 uid = nobody #指定当模块传输文件的守护进程UID gid = nobody #指定当模块传输文件的守护进程GID use chroot = no #使用chroot到文件系统中的目录中 max connections = 10 #最大并发连接数 strict modes = yes #指定是否检查口令文件的权限 pid file = /usr/local/rsyncd/rsyncd.pid #指定PID文件 lock file = /usr/local/rsyncd/rsyncd.lock #指定支持max connection的锁文件,默认为/var/run/rsyncd.lock motd file = /usr/local/rsyncd/rsyncd.motd #定义服务器信息的,自己写 rsyncd.motd 文件内容 log file = /usr/local/rsyncd/rsync.log #rsync 服务器的日志 log format = %t %a %m %f %b syslog facility = local3 timeout = 300 [conf] #自定义模块 path = /usr/local/nginx/conf #用来指定要备份的目录 comment = Nginx conf ignore errors #可以忽略一些IO错误 read only = no #设置no,客户端可以上传文件,yes是只读 write only = no #no为客户端可以下载,yes不能下载 hosts allow = 192.168.2.0/24 #可以连接的IP hosts deny = * #禁止连接的IP list = false #客户请求时,使用模块列表 uid = root gid = root auth users = backup #连接用户名,和linux系统用户名无关系 secrets file = /etc/rsyncd.pass #验证密码文件原文链接
相关资源:七夕情人节表白HTML源码(两款)