背景:
方案:
SFTP命令
sftp> helpAvailable commands:ascii Set transfer mode to ASCIIbinary Set transfer mode to binarycd path Change remote directory to 'path'lcd path Change local directory to 'path'detail remote-path Display system information about remote file or folderldetail local-path Display system information about local file or folderchgrp group path Change group of file 'path' to 'group'chmod mode path Change permissions of file 'path' to 'mode'chown owner path Change owner of file 'path' to 'owner'exit Quit sftphelp Display this help textinclude filename Include commands from 'filename' Alternate: < filenameget [-r][-a | -b] remote-path Download file -r downloads directory recursively force ascii (-a) or binary (-b) modeln [-s] existingpath linkpath Hardlink / symlink remote filels [options] [path] Display remote directory listinglls [options] [path] Display local directory listingmkdir path Create remote directorylmkdir path Create local directorymv oldpath newpath Move remote filelmv oldpath newpath Move local fileopen [user@]host[:port] Connect to remote hostput [-r][-a | -b] local-path Upload file -r uploads directory recursively force ascii (-a) or binary (-b) modepwd Display remote working directorylpwd Print local working directoryquit Quit sftprename oldname newname Rename remote filelrename oldname newname Rename local filermdir path Remove remote directorylrmdir path Remove local directoryrm path Delete remote filelrm path Delete local filesu username Substitutes the current user This is only supported with VShell for Windows 3.5 or later.type [transfer-mode] Display or set file transfer modeview remote-path Download and open fileversion Display protocol version
翻译一下就是:
sftp-- help 可用命令: cd 路径 更改远程目录到“路径” lcd 路径 更改本地目录到“路径” chgrp group path 将文件“path”的组更改为“group” chmod mode path 将文件“path”的权限更改为“mode” chown owner path 将文件“path”的属主更改为“owner” exit 退出 sftp help 显示这个帮助文本 get 远程路径 下载文件 ln existingpath linkpath 符号链接远程文件 ls [选项] [路径] 显示远程目录列表 lls [选项] [路径] 显示本地目录列表 mkdir 路径 创建远程目录 lmkdir 路径 创建本地目录 mv oldpath newpath 移动远程文件 open [用户@]主机[:端口] 连接到远程主机 put 本地路径 上传文件 pwd 显示远程工作目录 lpwd 打印本地工作目录 quit 退出 sftp rmdir 路径 移除远程目录 lrmdir 路径 移除本地目录 rm 路径 删除远程文件 lrm 路径 删除本地文件 symlink existingpath linkpath 符号链接远程文件 version 显示协议版本
我们主要用到的就是一下六个命令
cd 路径 更改远程目录到“路径” lcd 路径 更改本地目录到“路径” ls [选项] [路径] 显示远程目录列表 lls [选项] [路径] 显示本地目录列表 put 本地路径 上传文件 get 远程路径 下载文件
这里在详细说明一下远程目录和本地目录。
远程目录:ls查看到的是ubuntu虚拟机上面的目录
本地目录:lls查看到的是windows实体机上面的目录。
实例:
假设我需要实现windows下的e:\sftp\test1.txt和ubuntu下/home/enadmin/test2.txt的互换,可以进行一下操作:
put操作:windows->linux
查看目录权限
root@BJCGNMON01:/home# lltotal 20drwxr-xr-x 5 root root 4096 Apr 18 15:21 ./drwxr-xr-x 24 root root 4096 Jan 3 14:14 ../drwxr-xr-x 9 enadmin enadmin 4096 Apr 18 15:22 enadmin/drwxr-xr-x 2 root root 4096 Apr 18 15:21 sftp/--可以看到sftp的权限是root的drwxr-xr-x 2 root root 4096 Apr 18 14:57 test/root@BJCGNMON01:/home# chown -R enadmin.enadmin sftp/root@BJCGNMON01:/home# lltotal 20drwxr-xr-x 5 root root 4096 Apr 18 15:21 ./drwxr-xr-x 24 root root 4096 Jan 3 14:14 ../drwxr-xr-x 9 enadmin enadmin 4096 Apr 18 15:22 enadmin/drwxr-xr-x 2 enadmin enadmin 4096 Apr 18 15:21 sftp/--修改以后权限变成enadmin的了drwxr-xr-x 2 root root 4096 Apr 18 14:57 test/
拷贝文件
sftp> put test* --初始想将文件从windows系统put到ubuntu系统,发现失败,提示拒绝访问Uploading test1.txt to /home/test1.txtput: failed to upload e:/sftp/test1.txt. 拒绝访问。 Uploading test2.txt to /home/test2.txtput: failed to upload e:/sftp/test2.txt. 拒绝访问。 Uploading test3.txt to /home/test3.txtput: failed to upload e:/sftp/test3.txt. 拒绝访问。 sftp> pwd --查看当前目录是/home目录,权限是root的/homesftp> cd /home/enadmin/ --我切换到enadmin目录下sftp> lsGraphs.pm msmtp ntpsent smokeping.tar.gz smokepingrtt.tar.gzsmokepingrtt2.tar.gz Target wqywqy-zenhei-0.8.38-1.debsftp> llstest1.txt test2.txt test3.txtsftp> put test* -再次尝试将windows下的文件put到/homg/enadmin目录下,这次成功Uploading test1.txt to /home/enadmin/test1.txt 100% 4 bytes 4 bytes/s 00:00:00 e:/sftp/test1.txt: 4 bytes transferred in 0 seconds (4 bytes/s)Uploading test2.txt to /home/enadmin/test2.txt 100% 4 bytes 4 bytes/s 00:00:00 e:/sftp/test2.txt: 4 bytes transferred in 0 seconds (4 bytes/s)Uploading test3.txt to /home/enadmin/test3.txt 100% 5 bytes 5 bytes/s 00:00:00 e:/sftp/test3.txt: 5 bytes transferred in 0 seconds (5 bytes/s)sftp> cd /home/sftp/--在修改sftp目录权限以后,再次切换到sftp目录下sftp> lssftp> llstest1.txt test2.txt test3.txtsftp> put test* --这回put成功。所以跟权限相关Uploading test1.txt to /home/sftp/test1.txt 100% 4 bytes 4 bytes/s 00:00:00 e:/sftp/test1.txt: 4 bytes transferred in 0 seconds (4 bytes/s)Uploading test2.txt to /home/sftp/test2.txt 100% 4 bytes 4 bytes/s 00:00:00 e:/sftp/test2.txt: 4 bytes transferred in 0 seconds (4 bytes/s)Uploading test3.txt to /home/sftp/test3.txt 100% 5 bytes 5 bytes/s 00:00:00 e:/sftp/test3.txt: 5 bytes transferred in 0 seconds (5 bytes/s)
注意点:这里需要注意权限的问题。加入我是使用enadmin账户初始连接ubuntu的,那么我put的文件只能放到文件夹权限是enadmin的目录下,不能放到文件夹权限是root的目录下。如果想放到文件夹权限是root的目录下,那么初始就使用root账户连接ubunut,然后再创建sftp会话,这样就可以了。
get操作:linux->windows
get操作没有权限设定
sftp> pwd/home/enadminsftp> lpwde:/Documentssftp> lcd e:/sftp --切换目录sftp> llsrc.local test1.txt test2.txttest3.txtsftp> lsGraphs.pm msmtp ntpsent smokeping.tar.gz smokepingrtt.tar.gzsmokepingrtt2.tar.gz Target test1.txttest2.txt test3.txt wqywqy-zenhei-0.8.38-1.debsftp> get Graphs.pm --下载文件到windowsDownloading Graphs.pm from /home/enadmin/Graphs.pm 100% 13KB 13KB/s 00:00:00 /home/enadmin/Graphs.pm: 13503 bytes transferred in 0 seconds (13 KB/s)sftp> lls --查看windows目录Graphs.pm rc.local test1.txttest2.txt test3.txtsftp>
在window下向linux传送文件的方法。
首先在window中安装SecureCRT,然后在快速连接中建立一个到linux的连接,当然,你要先知道你的系统的ip,在终端中键入ifconfig可以查看到。
然后连接即可登陆到linux的终端下
要从linux传文件到window的话,这需要cd到你要传的文件的目录,然后用命令:sz 文件名即可上传。文件放在securesrt/download下面
要从window传送文件到linux,则在终端中输入rz,然后会出来一个对话框让你选择文件传送的。
一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地;
与ssh有关的两个命令可以提供很方便的操作:
sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive)
rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具
windows端需要支持ZModem的telnet/ssh客户端(比如SecureCRT)
运行命令rz,即是接收文件,SecureCRT就会弹出文件选择对话框,选好文件之后关闭对话框,文件就会上传到当前目录
注意:单独用rz会有两个问题:上传中断、上传文件变化(md5不同),解决办法是上传是用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的勾选。
-b binary 用binary的方式上传下载,不解释字符为ascii
-e 强制escape 所有控制字符,比如Ctrl+x,DEL等
运行命令sz file1 file2就是发文件到windows上(保存的目录是可以配置) 比ftp命令方便多了,而且服务器不用再开FTP服务了
PS:Linux上rz/sz这两个小工具安装lrzsz-x.x.xx.rpm即可。
当然,还可以设置一下目录了:
设置一下上传和下载的默认目录
options–>session options–>file transfer 下可以设置上传和下载的目录
剩下的你只要在用SecureCRT登陆linux终端的时候:
发送文件到客户端:sz filename
zmodem接收可以自行启动.
从客户端上传文件到linux服务端:
只要服务端执行 : rz
然后在 SecureCRT 里选文件发送,协议 zmodem
附:yum 根据命令名反查安装包用法
比如查 rz 命令的安装包名称
yum whatprovides */rz