受欢迎的手机网站建设,郑州免费网站制作,哈尔滨建设网站哪家好,wordpress 鼠标点击因为工作原因#xff0c;需要经常在不同的服务器见进行文件传输#xff0c;特别是大文件的传输#xff0c;因此对linux下不同服务器间数据传输命令和工具进行了研究和总结。主要是rcp,scp,rsync,ftp,sftp,lftp,wget,curl。 rcp rcp不是一种安全的的传输文件的方式#xff0… 因为工作原因需要经常在不同的服务器见进行文件传输特别是大文件的传输因此对linux下不同服务器间数据传输命令和工具进行了研究和总结。主要是rcp,scp,rsync,ftp,sftp,lftp,wget,curl。 rcp rcp不是一种安全的的传输文件的方式rcp通过rshrsh见下面来执行远程命令要使用rcp必须经过一些配置现在rcp已经被scp取代了常用scp来进行文件传输。要使用rcp需要具备以下条件 1如果系统中有/etc/hosts 文件应确保该文件包含要与之进行通信的远程主机信息internet_address official_name alias。例如118610.*** blade1.ibm.com.cnblade 2.rhosts 文件.rhosts 文件位于远程系统的根目录下其中包含本地系统的名称和本地登录名。例如远程系统的 .rhosts 文件中的项可能是blade1 root其中blade1 是本地系统的名称root 是本地登录名。这样blade1 上的 root 即可在包含 .rhosts 文件的远程系统中来回复制文件。 配置过程 1 在双方root用户根目录下建立.rhosts文件,并将双方的hostname加进去.在此之前应在双方的 /etc/hosts文件中加入对方的IP和hostname 2 把rsh服务启动起来,redhat默认是不启动的。方法用执行ntsysv命令在rsh选项前用空格键选中,确定退出。然后执行service xinetd restart即可。如果没有rsh请见下面rsh部分 3 到/etc/pam.d/目录下,把rsh文件中的auth required /lib/security/pam_securetty.so一行用“#”注释掉即可。只有注释掉这一行才能用root用户登录 命令使用 rcp [options] [[user]host1:]file1 ...[[user]host2:]file2 options: -r 递归地把源目录中的所有内容拷贝到目的目录中。 -p 试图保留源文件的修改时间和模式忽略umask。 rshremote shell它不够安全rsh使用条件同rcprsh配置过程以root为例 1 在服务器上运行/urs/bin/ntsysv选中rexec,rlogin,rsh三项服务。 2 运行#/sbin/service xinetd restart启动该三项服务。 3 运行echorexec/etc/securetty; echorlogin/etc/securetty; echorsh/etc/securetty 4 在服务器上运行echo你的ip地址root/root/.rhosts或者echo你的主机名root/root/.rhosts且确保在服务器上的/etc/hosts中有主机名和ip地址的映射关系 5 到/etc/pam.d/目录下,把rexec, rlongin, rsh文件中的auth required /lib/security/pam_securetty.so 一行用“#”注释掉即可。只有注释掉这一行才能用root用户登录 6 rsh命令用法rshremote-sytem-neame Linux-command例如rsh blade1 ls /home/root scp scp 命令是 SSH中最方便有用的命令了scp就是secure copy是用来进行远程文件拷贝的。数据传输使用 ssh并且和ssh 使用相同的认证方式提供相同的安全保证。 与rcp 不同的是scp 在需要进行验证时会要求你输入密码或口令。 scp [options] [本地用户名IP地址:]file1 [远程用户名 IP 地址 :] file2 options: -v 用来显示进度可以用来查看连接认证或是配置错误。 -C 使能压缩选项。 -c 选择使用那个加密算法具体对应到ssh的-c cipher-spec这个参数值会被传给ssh可选择值3desblowfishdes使用blowfish会快很多可以参看man ssh 中的-c cipher-spec -P 选择端口 -r 递归拷贝整个目录 -l 限制使用带宽Kbit/s -o 指定传给ssh的一些参数值比如Compressionyes -p 保留文件的修改时间等信息。 rsync rsync是rcp的替代品之一rsync 是一款高效的远程数据备份和镜象工具可快速地同步多台主机间的文件其具有如下特性 l 支持链接、所有者、组信息以及权限信息的拷贝 l 通过远程 shellssh, rsh进行传输 l 无须特殊权限即可安装使用 l 流水线式文件传输模式文件传输效率高 l 支持匿名操作 需要提及的是 rsync 以其优越的性能优势区别于其它几种 Linux 文件传输方法其同步文件的速度相当快这主要归功于 rsync 所使用的传输算法。简而言之 rsync 算法能在相当短的时间内计算出需要备份的数据只对源文件与目标文件的不同之处进行传输从而降低网络中传输的数据量以此达到快速备份镜像的目的。下面通过一典型应用场景来描述 rsync 算法的基本原理主机 A 与主机 B 均有对同一文件的拷贝用户对主机 A 上的拷贝进行更新主机 B 通过 rsync 算法对更新后的文件进行同步。以下是该算法的实现步骤 1 主机 B 将原始拷贝划分成大小为 N 的不重合的若干块文件末尾部分分块大小可能不足 N并对这些数据块进行两种不同方式的校验32 位的滚动弱校验、128 位的 MD4 强校验。弱校验较之强校验计算速度快。 2 主机 B 将每个数据块的弱校验、强校验结果发送给主机 A 。 3 主机 A 对更新后的文件拷贝中的每个长度为 N 的数据块进行弱校验并与从 B 接收到的弱校验值进行匹配若相同再进行强校验匹配。由于弱校验的滚动特性可以快速地筛选出需要进行同步的数据块。该算法的运算量主要集中在主机 A 上。 通过上述计算主机 A 将文件的不同部分发送给 BB 接收到两个拷贝之间的不同之处从而同步得到更新后的文件。通过如上方式rsync 避免了对相同数据的传输减少了网络带宽的浪费。在时间上整个过程中需一个往返从某种程度上也保证了 rsync 的优越性能。 Rsync可以通过两种方式来连接远程服务器一种是通过类shell命令的方式一种是通过rsync daemon的方式rsync daemon需要进行安装和配置具体如下 可从官方网站http://rsync.samba.org/ 上下载安装 rsync 的最新版本。使用时需将 rsync 分别安装于服务端和客户端服务端和客户端使用同一个 rsync 软件包来实现远程镜像和定期同步更新。需要说明的是一个 rsync 服务端可同时备份多个客户端的数据多个服务端备份一个客户端的数据。 rsync 默认端口为 873服务器在该端口接收客户的匿名或者认证方式的备份请求。 rsync 服务端在使用之前需要进行必要的配置其配置文件为 /etc/rsyncd.conf进行认证、访问、日志记录等控制。配置文件包括全局参数、模块参数的设置。 rsyncd.conf 文件中 [module] 之前的所有参数为全局参数也可以在全局参数部分定义模块参数在这种情况下该参数的值就是所有模块的默认值。全局参数设置程序使用的端口号指定消息文件、日志文件 pid 文件以及发送日志消息的级别。模块参数主要定义服务端哪个目录需要被同步。用户可根据不同的需要指定多个模块每个模块对应需要备份的一个目录树即若有 N 个需要备份的目录树则需要 N 个模块与之对应。模块中可以定义许多参数常见参数如下。 l Comment 模块信息描述该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。 l Path 指定供备份的目录路径必须指定该参数。 l max connections 指定最大并发连接数以保护服务器超过限制的连接请求将被告知随后再试。默认值为 0即没有限制。 l log file 指定日志文件 l read only 设定是否允许客户上载文件。若为 true 任何上载请求均会失败若为 false 且客户端拥有服务器目录读写权限则可以上载。默认值为 true 。 l write only 设定是否允许客户下载文件。若为 true 任何下载请求均会失败默认值为 false 。 l List 设定当客户请求可以使用的模块列表时是否列出该模块。若为 false则创建隐藏的模块。默认值为 true 。 l fake super 允许文件享有所有权限而无需后台服务以 root 权限进行操作。 l Filter 设置过滤列表以决定哪些文件可由客户端访问。 l hosts allow 指定允许客户连接的 IP 地址。可以为单个 IP 地址或整个网段。多个 IP或网段需要以空格隔开。默认是允许所有主机连接。 l dont compress 指定不进行压缩处理即可传输的文件默认值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz l pre-xfer exec, post-xfer exec 设置可在文件传输前后执行的命令。若在文件传输前执行的命令失败则取消本次传输操作。 需要注意的是服务器端启动/usr/bin/rsync--daemon --config/etc/rsyncd/rsyncd.conf 连接远程服务器的两种方式的基本语法 1 通过远程 shell 方式 l rsync [OPTION] [USER]HOST:SRC DEST用远程 shell如 ssh, rsh实现将远程机器的内容拷贝到本地机器。 SRC 地址路径中以单个冒号 : 进行分隔。 l rsync [OPTION] SRC [USER]HOST:DEST使用远程 shell如 rsh、ssh实现本地机器的内容拷贝到远程机器。 DEST 地址路径中以单个冒号 : 进行分隔。 2 通过 rsync daemon 方式 l rsync [OPTION] [USER]HOST::SRC DEST 或rsync [OPTION]rsync://[USER]HOST[:PORT]/SRC [DEST]从远程 rsync 服务器中拷贝文件到本地机。SRC 地址路径中以双冒号 :: 进行分隔。 l rsync [OPTION] SRC [USER]HOST::DEST 或rsync [OPTION] SRCrsync://[USER]HOST[:PORT]/DEST从本地机器拷贝文件到远程 rsync 服务器中。 DEST 地址路径中以双冒号 :: 进行分隔。 如果 rsync 命令中只指定 SRC 参数而不指定 DEST 参数则意为显示源文件列表而非进行同步拷贝。 Options: options: -v,--verbose 详细模式输出 -q,--quiet 精简输出模式 -c,--checksum 打开校验开关强制对文件传输进行校验 -a,--archive 归档模式表示以递归方式传输文件并保持所有文件属性等于-rlptgoD -r,--recursive 对子目录以递归模式处理 -R,--relative 使用相对路径信息 -b,--backup 创建备份也就是对于目的已经存在有同样的文件名时将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir将备份文件(如~filename)存放在在目录下。 -suffixSUFFIX定义备份文件前缀 -u,--update 仅仅进行更新也就是跳过所有已经存在于DST并且文件时间晚于要备份的文件。(不覆盖更新的文件) -l,--links 保留软链结 -L,--copy-links 想对待常规文件一样处理软链结 --copy-unsafe-links仅仅拷贝指向SRC路径目录树以外的链结 --safe-links忽略指向SRC路径目录树以外的链结 -H,--hard-links 保留硬链结 -p,--perms 保持文件权限 -o,--owner 保持文件属主信息 -g, --group 保持文件属组信息 -D,--devices 保持设备文件信息 -t,--times 保持文件时间信息 -S,--sparse 对稀疏文件进行特殊处理以节省DST的空间 -n,--dry-run现实哪些文件将被传输 -W,--whole-file 拷贝文件不进行增量检测 -x,--one-file-system 不要跨越文件系统边界 -B,--block-sizeSIZE 检验算法使用的块尺寸默认是700字节 -e,--rshCOMMAND 指定使用rsh、ssh方式进行数据同步 --rsync-pathPATH指定远程服务器上的rsync命令所在路径信息 -C,--cvs-exclude 使用和CVS一样的方法自动忽略文件用来排除那些不希望传输的文件 --existing仅仅更新那些已经存在于DST的文件而不备份那些新创建的文件 --delete删除那些DST中SRC没有的文件 --delete-excluded同样删除接收端那些被该选项指定排除的文件 --delete-after传输结束以后再删除 --ignore-errors及时出现IO错误也进行删除 --max-deleteNUM最多删除NUM个文件 --partial保留那些因故没有完全传输的文件以是加快随后的再次传输 --force强制删除目录即使不为空 --numeric-ids不将数字的用户和组ID匹配为用户名和组名 --timeoutTIMEIP超时时间单位为秒 -I,--ignore-times 不跳过那些有同样的时间和长度的文件 --size-only当决定是否要备份文件时仅仅察看文件大小而不考虑文件时间 --modify-windowNUM决定文件是否时间相同时使用的时间戳窗口默认为0 -T--temp-dirDIR 在DIR中创建临时文件 --compare-destDIR同样比较DIR中的文件来决定是否需要备份 -P等同于 --partial --progress显示备份过程 -z,--compress 对备份的文件在传输时进行压缩处理 --excludePATTERN指定排除不需要传输的文件模式 --includePATTERN指定不排除而需要传输的文件模式 --exclude-fromFILE排除FILE中指定模式的文件 --include-fromFILE不排除FILE指定模式匹配的文件 --version打印版本信息 --address绑定到特定的地址 --configFILE指定其他的配置文件不使用默认的rsyncd.conf文件 --portPORT指定其他的rsync服务端口 --blocking-io对远程shell使用阻塞IO -stats给出某些文件的传输状态 --progress在传输时现实传输过程 --log-formatformAT指定日志文件格式 --password-fileFILE从FILE中得到密码 --bwlimitKBPS限制I/O带宽KBytes per second -h,--help 显示帮助信息 实例 1 查看服务端文件及列表 l rsync 9.186.110.53::查看服务端可用的模块列表以及注释信息rsync ibmuser9.186.110.53::www/查看服务端 www 模块中的目录及文件列表使用 rsyncd 用户认证方式 l rsync ibmuser9.186.110.53:/var/www/html/查看服务端/var/www/html 目录中的内容使用服务端的系统用户进行验证如 ibmuser 2 保持客户端与服务端的数据同步 l rsync -avz ibmuser9.186.110.53::www/ /backup1/使用后台服务方式将服务端www 模块下的内容备份到本地 /backup1 目录中备份时保留原有权限、属性、属主及符号连接等并使用压缩方式加快数据传输。 l rsync – avzibmuser9.186.110.53:/var/www/html /backup2/使用 ssh 方式将远程的/var/www/html 目录备份到本地 /backup2/ 目录下 l rsync -avz --deleteibmuser9.186.110.53::www/ /backup3/将远程 www 模块备份到本地/backup3/ 目录中同时进行同步目录删除本地目录中多余的文件。 3 当服务端的数据出现问题时需要通过客户端的数据对服务端进行恢复只要客户端有服务端的写入权限即可通过调换 rsync 命令的 SRC、DEST 参数进行恢复。 ftp ftp命令使用文件传输协议(FileTransfer Protocol ,FTP)在本地主机和远程主机之间或者两个远程主机之间进行文件传输。FTP 协议允许数据在不同文件系统的主机之间传输。尽管这个协议在传输数据上提供了高适应性但是它并没有尝试去保留一个特定文件系统上的文件属性例如一个文件的保护模式或者修改次数。而且 FTP 协议很少对一个文件系统的整体结构作假定也不提供这样的功能比如递归的拷贝子目录。在使用 ftp 命令时需要注意 FTP 协议的这些特性。当需要保留文件属性或者需要递归的拷贝子目录时可以使用 rcp/scp 等命令。 如果需要将文件以ftp传输到目的服务器上必须在目的服务器上安装ftp server基本的安装和启动过程如下 根据服务对象的不同FTP服务可以分为两类一类是系统FTP服务器它只允许系统上的合法用户使用另一类是匿名FTP服务器它允许任何人登录到FTP服务器和服务器连接后在登录提示中输入Anonymous即可访问服务器。 Yum list *ftp* 找到可用的Ftp包 sudo yum install ftp包 手工启动和关闭启动/usr/sbin/ftprestart 关闭/usr/sbin/ftpshut FTP服务器的配置为了确保FTP服务器安全必须设置一些重要的配置文件以更好地控制用户的访问权限。这些配置文件是/etc/ftpusers/etc/ftpconversions/etc/ftp-groups/etc/ftpphosts/etc/ftpaccess。利用这些文件能够非常精确地控制哪些人、在什么时间、从什么地点可以连接服务器并且可以对他们连接后所做的工作进行检查跟踪。 1 /etc/ftpusers该文件夹中包含的用户不能通过FTP登录服务器有时将需要禁止的用户账号写入文件/etc/ftpuser中这样就可以禁止一些用户使用FTP服务。 2 /etc/ftpconversions用来配置压缩/解压缩程序。 3 /etc/ftpgroups创建用户组这个组中的成员预先定义可以访问FTP服务器。 4 /etc/ftpphosts用来根据禁止或允许远程主机对特定账户的访问例如allow czc 192.168.0.0/24 deny cdd 10.0.0.0/8表示允许czc用户从192.168.0这个网段连线访问拒绝cdd从10.这个网段连线访问。 5 /etc/ftpaccess是非常重要的一个配置文件用来控制存取权限文件中的每一行定义一个属性并对属性的值进行设置。下面对它的一些常用配置做一点介绍 l 定义用户类别格式class[类名] [real/guest/anonymous][IP地址] 功能这个指令的功能设定FTP服务器上用户的类别。并可对客户端的IP地址进行限制允许特定或者全部的IP地址访问FTP服务器。 l 登录重试次数在命令行中输入loginfails 10这表明如果10次还没有登录成功就切断连线。 l 密码检查格式passwd-check〈strictness〉 warn。是对匿名用户的密码使用方式的检查其中〈strictness〉是三个可能的字符串之一None、Trivial、RFC822。若选None表示将不对口令做任何检查若选Trivial表示对口令有一定的要求它需要在口令中至少要有一个符号若选RFC822则表示最严格要求E-mail地址必须遵守RFC822报文标题标准如czcdomain.com 。例如passwd-check rfc822 warn表明密码的要求很严格当密码不符合规定时出现警告信息。 l 登录人数的限制格式limit[类别] [人数] [时间] [文件名]。设置指定类别在约定时间内可以登录FTP的人数。例如limit remote Any/etc/many.msg说明类别Remote类别在任何时间内登录人数不超过20个人否则会显示Many.msg警告信息。 安装、配置好FTP服务器后只需要在命令提示符后输入FTP Servername用主机名或希望连接的FTP服务器的IP地址代替Servername按照提示输入用户名和口令然后用标准的Linux上移或下移FTP服务器目录结构。另外也可以采用图形化FTP程序包括窗口式gFTP可以借助Web浏览器去访问FTP服务器。 在登录上ftp后可以使用如下ftp命令进行操作 l FTP ! 从 ftp 子系统退出到外壳 l FTP ? 显示 ftp 命令说明和 help 相同格式:? [command]说明:[command]指定需要帮助的命令名称。假如没有指定 command,linux ftp命令参数将显示全部命令的列表。 l FTP append 使用当前文档类型配置将本地文档附加到远程电脑上的文档。格式:append local-file [remote-file]说明:local-file 指定要添加的本地文档remote-file指定要添加 local-file 的远程电脑上的文档。假如省略了 remote-file,本地文档名将被用作远程文档名。 l FTP ascii 将文档传送类型配置为默认的 ASCII。说明:linux ftp命令参数支持两种文档传送类型,ASCII 码和二进制图像在传送文本文档时应该使用ASCII。 l FTP bell 转换响铃以在每个文档传送命令完成后响铃??默认情况下,铃声是关闭的。 l FTP binary(或bi) 将文档传送类型配置为二进制 l FTP bye(或by) 结束和远程电脑的linux ftp命令参数会话并退出linux ftp命令参数。 l FTP cd 更改远程电脑上的工作目录。格式:cd remote-directory说明:remote-directory 指定要更改的远程电脑上的目录。 l FTP close 结束和远程服务器的linux ftp命令参数会话并返回命令解释程式。 l FTP debug 转换调试。当调试打开时,发送到远程电脑的每个命令都打印,前面是字符串。默认情况下,调试是关闭的。 l FTP delete 删除远程电脑上的文档。格式:delete remote-file说明:remote-file 指定要删除的文档。 l FTP dir 显示远程目录文档和子目录列表。格式:dir [remote-directory] [local-file]说明:remote-directory 指定要查看其列表的目录。假如没有指定目录,将使用远程电脑中的当前工作目录。Local-file 指定要存储列表的本地文档。假如没有指定,输出将显示在屏幕上。 l FTP disconnect 从远程电脑断开,保留linux ftp命令参数提示。 l FTP get 使用当前文档转换类型将远程文档复制到本地格式:get remote-file [local-file]说明:remote-file 指定要复制的远程文档Local-file指定要在本地电脑上使用的名称假如没有指定,文档将命名为 remote-file。 l FTPglob 转换文档名组合组合允许在内部文档或路径名中使用通配符(*和?)默认情况下,组合是打开的。 l FTPhash 转换已传输的每个数据块的数字签名 (#) 打印数据块的大小是2048 字节默认情况下,散列符号打印是关闭的。 l FTPhelp 显示linux ftp命令参数命令说明。格式:help [command] 说明:command 指定需要有关说明的命令的名称假如没有指定 command,linux ftp命令参数将显示全部命令的列表。 l FTPlcd 更改本地电脑上的工作目录默认情况下,工作目录是启动linux ftp命令参数的目录。格式:lcd [directory]说明:directory 指定要更改的本地电脑上的目录假如没有指定directory,将显示本地电脑中当前的工作目录。 l FTPliteral 将参数逐字发送到远程linux ftp命令参数服务器将返回单个的linux ftp命令参数回复代码格式:literal argument [ ...]说明:argument 指定要发送到linuxftp命令参数服务器的参数。 l FTPls 显示远程目录文档和子目录的缩写列表格式:ls [remote-directory] [local-file]说明:remote-directory 指定要查看其列表的目录假如没有指定目录,将使用远程电脑中的当前工作目录local-file 指定要存储列表的本地文档??假如没有指定,输出将显示在屏幕上。 l FTPmdelete 删除远程电脑上的文档格式:mdelete remote-files [ ...]说明:remote-files 指定要删除的远程文档。 l FTPmdir 显示远程目录文档和子目录列表能够使用 mdir 指定多个文档格式:mdir remote-files [ ...] local-file说明:remote-files 指定要查看列表的目录必须指定 remote-files请键入 - 使用远程电脑上的当前工作目录。local-file 指定要还原列表的本地文档请键入- 在屏幕上显示列表。 l FTPmget 使用当前文档传送类型将远程文档复制到本地电脑格式:mget remote-files [ ...]说明:remote-files 指定要复制到本地电脑的远程文档。 l FTPmkdir 创建远程目录格式:mkdir directory说明:directory 指定新的远程目录的名称。 l FTPmls 显示远程目录文档和子目录的缩写列表格式:mls remote-files [ ...] local-file说明:remote-files 指定要查看列表的文档??必须指定remote-files;请键入- 使用远程电脑上的当前工作目录。local-file 指定要存储列表的本地文档请键入 - 以在屏幕上显示列表。 l FTPmput 使用当前文档传送类型将本地文档复制到远程电脑上。格式:mput local-files [ ...]说明:local-files 指定要复制到远程电脑的本地文档。 l FTPopen 和指定的linux ftp命令参数服务器连接格式:open computer [port]说明:computer 指定要连接的远程电脑??能够通过 IP 地址或电脑名称指定电脑(DNS 或主机文档必须可用)假如自动登录打开(默认),ftp 还将尝试自动将用户登录到linux ftp命令参数服务器port 指定用来联系linux ftp命令参数服务器的端口号。 l FTPprompt 转换提示假如关闭提示时 mget 及 mput 传送任何文档,linux ftp命令参数在多文档传送过程中将提示允许您有选择地检索或存储文档默认情况下,提示是打开的。 l FTPput 使用当前文档传送类型将本地文档复制到远程电脑上格式:put local-file [remote-file]说明:local-file 指定要复制的本地文档remote-file指定要在远程电脑上使用的名称??假如没有指定,文档将命名为 local-file。 l FTPpwd 显示远程电脑上的当前目录。 l FTPquit 结束和远程电脑的linux ftp命令参数会话并退出linux ftp命令参数。 l FTPquote 将参数逐字发送到远程linux ftp命令参数服务器将返回单个的linux ftp命令参数回复代码。 l FTPrecv 使用当前文档传送类型将远程文档复制到本地电脑Recv 和 get相同。格式:recv remote-file [local-file]说明:remote-file 指定要复制的远程文档local-file指定要在本地电脑上使用的名称假如没有指定,文档将命名为 remote-file。 l FTPremotehelp 显示远程命令帮助格式:remotehelp [command]说明:command 指定需要帮助的命令的名称假如没有指定 command,linux ftp命令参数将显示全部远程命令的列表。 l FTPrename 重命名远程文档格式:rename filename newfilename说明:filename 指定要重命名的文档newfilename指定新的文档名。 l FTPrmdir 删除远程目录格式:rmdir directory说明:directory 指定要删除的远程目录的名称。 l FTPsend 使用当前文档传送类型将本地文档复制到远程电脑上Send 和put 相同格式:send local-file [remote-file]说明:local-file 指定要复制的本地文档remote-file指定要在远程电脑上使用的名称假如没有指定,文档将命名为 local-file。 l FTPstatus 显示linux ftp命令参数连接和转换的当前状态。 l FTPtrace 转换数据包跟踪Trace 在运行linux ftp命令参数命令时显示每个数据包的路由。 l FTPtype 配置或显示文档传送类型格式:type [type-name]说明:type-name 指定文档传送类型默认配置为 ascii假如没有指定type-name,将显示当前的类型。 l FTPuser 指定远程电脑的用户格式:user username [password] [account]说明:user-name 指定登录到远程电脑所使用的用户名password 指定 user-name 的密码假如没有指定,但必须指定,linux ftp命令参数会提示输入密码。account 指定登录到远程电脑所使用的帐户假如没有指定account,但是需要指定,linux ftp命令参数会提示您输入帐户。 l FTPverbose 转换 verbose 模式假如打开,将显示任何 linux ftp命令参数响应在文档传送完成后,将同时显示和传送效率有关的统计信息默认情况下,verbose 是打开的。 sftp sftp安全文件传输协议与ftp 有着几乎一样的语法和功能。FTP 为 SSH的一部份是一种传输档案至 Blogger 伺服器的安全方式。它并不使用ftp守护进程ftpd或wu-ftpd来进行连接而是有意义地增强系统的安全性。实际上通过监视一些系统中的log文件可以注意到很多攻击是针对于ftpd守护进程的。sftp避免了这些攻击从而可以停止在wu-ftpd上潜在的危险。SFTP本身没有单独的守护进程它必须使用sshd守护进程端口号默认是22来完成相应的连接操作。使用SFTP是非常安全的。但是由于这种传输方式使用了加密/解密技术所以传输效率比普通的FTP要低得多如果您对网络安全性要求更高时可以使用SFTP代替FTP。 用法举例 1 sftproot10.48.30.192:/root/test.sh直接将192上的文件复制到本地 2 sftproot10.48.30.192:/root 直接连接到192的root目录下这样就可以使用getput等命令了 sftp使用在数据连接上使用ssh2所以文件的传输是尽可能地安全。使用sftp代替ftp两个主要的的原因是 1 password从不用明文传输防止sniffer嗅探器的攻击。 2 数据在传输时被加密使用刺探和修改连接非常困难。 使用sftp2是非常简单的。让我们假设你使用了你的帐户myname通过sftp连按上了主机host1。可以使用命令sftp mynamehost1。当sftp2准备好了来接受连接时它将显示一个状态提示符 sftp。在sftp手册中有完整的用户可以使用的命令列表其中有 l quit从这个应用程序中退出。 l cd directory改变当前的远程工作目录。 l lcd directory改变当前的本地工作目录。 l ls [ -r ] [ -l ] [ file ... ]列出在远地服务器上的文件名。如果是目录则列出目录的内容。当命令行中指定了-r则递归地显示目录树。默认情况下子目录并不被访问。当命令行中指定了-l文件与目录的权限属主大小和修改时间被列出。当没有参数被指定则.当前目录的内容被列出。普通情况下选项-r和-l是互相不兼容的。 l lls [ -r ] [ -l ] [ file ... ]与ls一样但是是对于本地文件操作。 l get [file ...]从远程端传送指定的文件到本地端。目录内容被递归地复制。 l put [ file ... ]从本地端传送指定的文件到远地端。目录内容被递归地复制。 l mkdir dir (rmdir dir)尝试建立或删除参数中指定的目录。 l 通配符对于ls,lls,get和put是支持的。格式在sshregex手册中有描述。 从sftp使用加密技术以来一直有一个障碍连接速度慢有2-3倍但是这一点对于非常好的安全性来讲只能放在一边了。在一个测试中局域网上的sniffer可以在一个小时中捉住ftp连接上的4个password.。sftp的使用可以从网络上传送文件并且除去这些安全问题。 lftp lftp 是一个功能强大的下载工具它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp非常像一个shell: 有命令补全历史记录允许多个后台任务执行等功能使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。 命令行语法 (1) lftp [-d] [-e cmd] [-p port][-u user[,pass]] [site] -e在选择后执行命令 -u [,] 使用指定的用户名/口令进行验证 -p 连接指定的端口 Site:主机名URL 或书签的名字 (2) lftp -f script_file 执行文件中的命令后退出 (3) lftp -c commands 执行命令后退出 (4) lftp –version 显示 lftp 版本后退出 (5) lftp --help 显示帮助信息后退出 例子 1 如果在命令行中输入的站点名称lftp将直接登录站点比如 lftp ftp://............. 2 如果在命令行不输入站点名称则必须在进入到lftp界面后用open命令打开 Lftp lftp :~ open ftp://................... 常用命令 l 下载单个文件和一组文件断点续传用-c参数 lftp ................:/ get -c ls-lR.txt lftp ...............:/ mget *.txt l 镜像(反镜像即上传)一个目录可以用多个线程并行镜像一个目录(--parallelN) lftp ................:/ mirror incoming local_name lftp ................:/ mirror -R local_name lftp ................:/ mirror --parallel3 incominglocal_name l 多线程下载类似网络蚂蚁的功能;缺省是5个线程 lftp ................:/ pget -n 4 ls-lR.txt l 后台任务管理 缺省情况下按 Ctrlz,正在执行的任务将转为后台执行也可以在命令行末尾加符号使任务在后台执行。用jobs命令可以查看所有的后台进程。用queue命令可以排队新的任务。如果退出lftp是还有任务在后台执行lftp将转为后台执行。 l 其它用法 lftp支持类似bash的管道操作例如用下面的命令可以将ftp服务器上的特定目录下(也可以是整个站点)所有文件的大小存到本地的文件ls.txt中 lftp ................:/ du incoming ls.txt 相关文件 1 /etc/lftp.conf 全局配置文件实际位置依赖系统配置文件目录可能在/etc也可能在/usr/local/etc 2 ~/.lftp/rc, ~/.lftprc 用户配置文件将在/etc/lftp.conf之后执行所以这里面的设置会覆盖/etc/lftp.conf中的设置。 3 lftp 缺省不会显示 ftp 服务器的欢迎信息和错误信息这在很多时候不方便因为你有可能想知道这个服务器到底是因为没开机连不上还是连接数已满。如果是这样你可以在 ~/.lftprc 里写入一行debug 3就可以看到出错信息了。更多的配置选项请查man手册或在lftp界面内用命令 set -a 获得。 4 ~/.lftp/log 当lftp转为后台非挂起模式执行时输出将重定向到这里 5 ~/.lftp/bookmarks 这是lftp存储书签的地方可以lftp查看bookmark命令 6 ~/.lftp/cwd_history 这个文件用来存储访问过的站点的工作目录 7 ~/.lftprc 在用lftp访问国内一些ftp服务器时往往看到的中文是乱码。不用慌这是由于服务器和本地编码不一致造成的。我们只要在主目录下新建一个文件~/.lftprc或者~/.lftp/rc。并在其中加入以下内容debug 3set ftp:charset GBKset file:charset UTF-8#setftp:passtive-mode no#alias utf8 set ftp:charset UTF-8#alias gbk set ftp:charset GBK 登录ftp服务器 lftpftp://user:passwordsite:port lftpuser:passwordsite:port lftpsite -p port -u user,password lftpsite:port -u user,password 上面的几种方式都能正常工作不过密码都是明文这样好像不太安全哦。没关系使用lftp usersite:port系统会提示输入password密码就回显为******了不过每次都输入这么多好麻烦哦。如果有类似leapftp的站点管理器就好了其实lftp早就给我们想好了这就是bookmark。后面我们将会看到。 在终端运行如manlftp或登录ftp后输入help就可以看到命令列表下面我们看一下lftp常用的命令 1 ls显示远端文件列表(!ls显示本地文件列表)。 2 cd切换远端目录(lcd 切换本地目录)。 3 get下载远端文件。 4 mget下载远端文件(可以用通配符也就是 *)。 5 pget使用多个线程来下载远端文件, 预设为五个。 6 mirror下载/上传(mirror-R)/同步整个目录。 7 put上传文件。 8 mput上传多个文件(支持通配符)。 9 mv移动远端文件(远端文件改名)。 10 rm删除远端文件。 11 mrm删除多个远端文件(支持通配符)。 12 mkdir建立远端目录。 13 rmdir删除远端目录。 14 pwd显示目前远端所在目录(lpwd显示本地目录)。 15 du计算远端目录的大小 16 !执行本地 shell的命令(由于lftp 没有 lls, 故可用 !ls 来替代) 17 Lcd切换本地目录 18 Lpwd显示本地目录 19 Alias定义别名 20 Bookmark设定书签。 21 Exit退出ftp 22 快捷书签ftp中的bookmark命令是将配置写到~/.lftp/bookmarks文件中我们可以直接修改此文件快速登陆ftp服务器。 wget wget 是一个经由 GPL 许可的可从网络上自动获取文件的自由软件包。它是一个非交互式的命令行工具。支持 HTTPHTTPS 和 FTP 协议支持代理服务器以及断点续传功能。 wget 可实现递归下载即可跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本完全重建原始站点的目录结构实现远程网站的镜像。在递归下载时wget 将页面中的超级链接转换成指向本地文件方便离线浏览。由于非交互特性wget 支持后台运行用户在退出系统后仍可继续运行。功能强大设置方便简单。 基本语法: wget [options][URL-list] Options: -r 递归下载服务器上所有的目录和文件。由 -l选项来指定递归深度。 -b 后台下载 -m 制作站点镜像 -c 指定断点续传功能。该功能要求服务器支持断点续传。 -I 指定下载目录列表可实现批量下载 -A/-R 指定接受拒绝下载列表实现选择性地下载 --proxyon/off 指定是否利用代理服务器进行下载 -t,--triesNUMBER 最大尝试链接次数 (0 表示无限制默认为 20 次 ) -nc,--no-clobber 不覆盖已存在的文件 -N,--timestamping 只下载比本地新的文件 -nd--no-directories 不进行目录结构创建 -x,--force-directories 强制创建目录结构 -nH,--no-host-directories 不继承主机目录结构 -P,--directory-prefixPREFIX 设置目录前缀 例子递归下载 http://www.ibm.com.cn 站点的信息。下载所有显示完整网页所以需要的文件如图片等。在下载不进行上层目录搜索并将绝对链接转换为相对链接。 wget -r -p -np -k http://www.ibm.com.cn 将在本地硬盘建立http://www.ibm.com.cn 的镜像镜像文件存入当前目录下一个名为 www.ibm.com.cn 的子目录中也可以使用 -nH 参数指定不建立该子目录而直接在当前目录下建立镜像的目录结构递归深度为 4重试次数为无穷若连接出现问题wget 将永远重试下去直至任务完成 wget -m -l4 -t0 http://www.ibm.com.c 使用代理进行下载并实现断点续传。代理可以在环境变量 PROXY 或 wgetrc 文件中设定。 -c 选项要求服务支持断点续传。 wget -Y on -c http://www.ibm.com.cn curl curl是对 libcurl 库的一个命令行工具包装。libcurl 库中提供了相应功能的 API可以在程序中调用。 curl 使用 URL 的语法来传输文件它支持 FTP, FTPS, HTTP, HTTPS, TFTP, SFTP, TELNET 等多种协议。 curl 功能强大它提供了包括代理支持用户认证FTP 上载HTTP postSSL 连接文件续传等许多特性。 基本语法curl [options …] url 其中下载参数大约有 80 多个curl 的各个功能完全依靠这些参数来完成。下面举例说明 curl 的一些基本用法。 使用实例 1 获取 GNU 的主页curl http://www.gnu.org 2 获取 GNU 的 FTP 服务器上根目录下的 README 文件curl ftp://ftp.gnu.org/README 3 从一个字典中获取 curl 的定义curl dict://dict.org/m:curl 4 如果需要指定用户名和密码的话可以在 url 中指定或者使用 -u 参数curl ftp://name:passwdmachine.domain:port/full/path/to/file或者curl -uname:passwd ftp://machine.domain:port/full/path/to/file 5 curl 会将从指定 url 处获取的内容打印到标准输出上。如果需要保存在本地文件中可以使用 -o或使用 -O 参数指定使用远程主机上的文件名如果 url 中没有给出文件名的部分则此操作将会失败curl -o gnu.html http://www.gnu.org 或者curl -O http:///www.gnu.org/index.htm 6 使用 -x 选项来使用代理进行连接curl -x my-proxy:port ftp://ftp.somesite.com/READMEN 7 通过使用 curl 的 -T 选项来进行上载curl -T - ftp://ftp.upload.com/upfile此命令从标准输入读取数据并上载至远程 FTP 服务器上的 upfile 文件中。也可以指定上载一个本地文件curl -T localfile -a ftp://ftp.upload.com/upfile其中 -a 参数表示以添加方式将localfile 中的内容附加到 upfile 的末尾。 总的来说curl 适合用来进行自动的文件传输或操作序列它是一个很好的模拟用户在网页浏览器上的行为的工具。尤其当需要在程序中调用时libcurl 是个很好的选择。 传输速度 因为经常在服务器见进行文件传输就对传输速度和带宽有要求这里总结一下可以影响以上rcp,scp,rsync,ftp,sftp,lftp,wget,curl这6个命令的传输速度和带宽的参数 (1) rcp没有参数可以调整带宽和传输速度 (2) scp如果传输的文件没有压缩可以使用-C参数-C 使能压缩选项。-c 选择使用那个加密算法具体对应到ssh的-c cipher-spec这个参数值会被传给ssh可选择值3desblowfishdes使用blowfish会快很多可以参看man ssh 中的-c cipher-spec。可以使用-l 限制使用带宽Kbit/s。避免因为传输文件而影响其他程序使用带宽。-o ssh_option使用ssh选项 (3) rsync:-B, --block-sizeSIZE 检验算法使用的块尺寸默认是700字节-z, --compress 对备份的文件在传输时进行压缩处理--bwlimitKBPS 限制I/O带宽KBytes per second -e, --rshCOMMAND 指定使用rsh、ssh方式进行数据同步 (4) ftpFTPascii 将文档传送类型配置为默认的 ASCII。说明:linux ftp命令参数支持两种文档传送类型,ASCII 码和二进制图像在传送文本文档时应该使用ASCII。Binary二进制传输。 (5) sftp: -B buffer_size -C使用压缩-ossh_option使用ssh选项 (6) lftp可以调整进程数等 (7) wget: --limit-rateamount限制带宽。 (8) curl-B/--use-ascii和--cipherslist of ciphers--compressed等。 总结 1 传输性能wget 通过支持后台执行及断点续传提高文件传输效率 rsync 则以其高效的传输及压缩算法达到快传输的目的。 2 配置难度rcp 只需进行简单的配置创建.rhost文件以及设置/etc/hosts文件中主机名与IP地址列表 wget设置方便简单只需在客户端指定参数执行命令即可 rsync 在使用前需要对服务端/etc/rsyncd.conf 进行参数设定配置内容相对复杂。 3 安全性能ftp、rcp不保证传输的安全性scp、rsync则均可基于ssh 认证进行传输提供了较强的安全保障。wget 也可通过指定安全协议做到安全传输。 通过上述的对比不难发现每种文件传输方法基于其自身的特点与优势均有其典型的适用场景 1 ftp 作为最常用的入门式的文件传输方法使用简单易于理解并且可以实现脚本自动化但是需要安装ftp server才可以访问远程ftp server 2 rcp 相对于ftp可以保留文件属性并可递归的拷贝子目录 3 scp 利用ssh传输数据并使用与ssh相同的认证模式相对于rcp提供更强的安全保障 4 wget实现递归下载可跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本完全重建原始站点的目录结构适合实现远程网站的镜像 5 curl 则适合用来进行自动的文件传输或操作序列是一个很好的模拟用户在网页浏览器上的行为的工具 6 rsync 更适用于大数据量的每日同步拷贝的速度很快相对wget来说速度快且安全高效。 7 sftp使用在数据连接上使用ssh2所以文件的传输是尽可能地安全。但传输速度慢。是ftp的替代品比ftp安全不能访问http资源。 8 lftp可以访问ftp资源也可以访问http资源。支持断点续传多进程下载。