一、FTP

       ftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输。

ftp(选项)(参数)

选项
-d:详细显示指令执行过程,便于排错或分析程序执行的情况;
-i:关闭互动模式,不询问任何问题
-g:关闭本地主机文件名称支持特殊字符的扩充特性
-n:不使用自动登录
-v:显示指令执行过程

参数

主机:指定要连接的FTP服务器的主机名或ip地址。在命令行中,主机属于可选项,如果指定主机,ftp 将试图与远程 ftp 服务程序进行连接;如果没有指定主机,ftp 将给出提示符,等待用户输入命令。此时在 ftp> 提示符后面输入 open 子命令加主机名或 IP 地址,将试图连接指定的主机。如果连接成功,需要在远程机上登录。在远程站点上登录成功后,在“ ftp> ”提示符下可以自由使用 ftp 提供的各种子命令,最常用的子命令如下所示。

ls

列出远程机的当前目录

cd

在远程机上改变工作目录

lcd

在本地机上改变工作目录

ascii

设置文件传输方式为 ASCII 模式

binary

设置文件传输方式为二进制模式

close

终止当前的 ftp 会话

get (mget)

从远程机传送指定文件到本地机

put (mput)

从本地机传送指定文件到远程机

open

连接远程 ftp 站点

quit

断开与远程机的连接并退出 ftp

?

显示本地帮助信息

!

转到 Shell 中

prompt 1

关闭交互模式

脚本编写

       使用 ftp 命令的 -in 选项,并重定向 ftp 命令的输入。现在我们来编写一个利用 ftp 登录到远程服务器,并以 bin 的文件格式,在 /home 目录下,下载 test1.log 以及 test2.sh 至本机 /data/tmp/,并从本地 /data目录上传文件 test3.c 至远程服务器 /home 的自动化脚本。 

ftp -ni <<+ 
     open $IP 
     user $USERNAME $PASSWD 
     bin 
     cd /home 
     lcd /data/tmp/
     mget test1.log test2.sh 
     lcd /data 
     mput test3.c 
     ls 
     bye

       FTP 协议允许数据在不同文件系统的主机之间传输。但是它并没有尝试去保留一个特定文件系统上的文件属性(例如一个文件的保护模式或者修改次数),而且 FTP 协议很少对一个文件系统的整体结构作假定,也不提供这样的功能,比如递归的拷贝子目录。

 



二、RCP

       用于计算机之间进行文件拷贝,既可以用于文件到文件的拷贝,也可以用于把文件或目录拷贝到另一个目录中。

rcp(选项)(参数)

选项
-p:保留源文件或目录的属性,包括拥有者、所属群组、权限与时间
-r:递归处理,将指定目录下的文件与子目录一并处理
-x:加密两台Linux主机间传送的所有信息
-D:指定远程服务器的端口号

        同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线\\、双引号""或单引号''括起来,使所有的shell元字符都能被远程地解释。需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。

参数

源文件:指定要复制的源文件,源文件可以有多个。

配置rcp命令的使用环境

1、在双方root用户根目录下建立rhosts文件,并将双方的hostname加进去。在此之前应在双方的/etc/hosts文件中加入对方的ip和hostname

2、把rsh服务启动起来,redhat默认是不启动的。 方法:用执行ntsysv命令,在rsh选项前用空格键选中,确定退出。然后执行service xinetd restart即可。

rcp text CentOS:/home/newOne

 



三、SCP

       scp 命令在网络上的主机之间拷贝文件,它是安全拷贝(secure copy)的缩写。scp 命令使用 ssh 来传输数据,并使用与 ssh 相同的认证模式,提供同样的安全保障。

scp(选项)(参数)

选项:
-1:使用ssh协议版本1;
-2:使用ssh协议版本2; 
-4:使用ipv4; 
-6:使用ipv6;
-B:以批处理模式运行; 
-C:使用压缩; 
-F:指定ssh配置文件; 
-l:指定宽带限制;
-o:指定使用的ssh选项; 
-P:指定远程主机的端口号; 
-p:保留文件的最后修改时间,最后访问时间和权限模式; 
-q:不显示复制进度; 
-r:以递归方式复制。

参数:

源文件:指定要复制的源文件。 目标文件1:目标文件2。格式为user@host:filename(文件名为目标文件的名称)

 



四、rsync

       rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。以下是该算法的实现步骤:

  1. 主机 B 将原始拷贝划分成大小为 N 的不重合的若干块(文件末尾部分分块大小可能不足 N),并对这些数据块进行两种不同方式的校验:32 位的滚动弱校验、128 位的 MD4 强校验。弱校验较之强校验计算速度快。
  2. 主机 B 将每个数据块的弱校验、强校验结果发送给主机 A 。
  3. 主机 A 对更新后的文件拷贝中的每个长度为 N 的数据块进行弱校验并与从 B 接收到的弱校验值进行匹配,若相同再进行强校验匹配。由于弱校验的滚动特性可以快速地筛选出需要进行同步的数据块。该算法的运算量主要集中在主机 A 上。
  4. 通过上述计算,主机 A 将文件的不同部分发送给 B,B 接收到两个拷贝之间的不同之处,从而同步得到更新后的文件。

rsync有六种不同的工作模式:



1. 通过远程 shell 方式:

(1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:

# rsync [OPTION]... SRC DEST
rsync -a /data /backup

(2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:

# rsync [OPTION] SRC [USER@]HOST:DEST
rsync -avz *.c foo:src

(3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC路径地址包含单个冒号":"分隔符时启动该模式。如:

# rsync [OPTION] [USER@]HOST:SRC DEST
rsync -avz foo:src *.c



2. 通过 rsync daemon 方式

(1)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:

# rsync [OPTION] [USER@]HOST::SRC DEST
# 或 rsync [OPTION] rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync -av root@192.168.78.192::www /databack

(2)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:

# rsync [OPTION] SRC [USER@]HOST::DEST
# 或 rsync [OPTION] SRC rsync://[USER@]HOST[:PORT]/DEST
rsync -av /databack root@192.168.78.192::www

如果 rsync 命令中只指定 SRC 参数而不指定 DEST 参数,则意为显示源文件列表而非进行同步拷贝。

常用选项:

选项

描述

-a, --archive

归档模式,保持所有文件属性,等同于 -rlptgoD

-v, --verbose

详细信息输出

-r, --recursive

对子目录进行递归处理

-R, --relative

使用相对路径信息

-b, --backup

创建备份

-z, --compress

对备份的文件在传输时进行压缩处理

--delete

用于同步目录,从 DEST 中将 SRC 不存在的文件进行删除

--progress

显示备份过程