Linux VPS远程ftp服务器上传下载文件命令

by Web全栈工程师 on 2014 年 09 月 26 日

本文以介绍的形式来和大家一起了解一下关于Linux VPS上用SSH命令来登录远程FTP,进行简单的上传下载管理。可用于网站备份等用途,
这里可以查看用scp的方式上传下载远程服务器文件和目录
1、从远程ftp服务器下载文件的命令格式:
get 远程ftp服务器上当前目录下要下载的文件名 [下载到本地机器上当前目录时的文件名],如:
get nmap_file [nmap]
意思是把远程ftp服务器下的文件nmap_file下载到本地机器的当前目录下,名称更改为nmap。
带括号表示可写可不写,不写的话是以该文件名下载。
如果要往ftp服务器上上传文件的话需要去修改一下vsftpd的配置文件,名称是vsftpd.conf,在/etc目录下。要把其中的 “#write_enable=YES”前面的“#”去掉并保存,然后重启vsftpd服务:
sudo service vsftpd restart。
2、向远程ftp服务器上传文件的命令格式:
put 本地机器上当前目录下要上传的文件名 [上传到远程ftp服务器上当前目录时的文件名],如:
put sample.c [ftp_sample.c]
意思是把本地机器当前目录下的文件smaple.c上传到远程ftp服务器的当前目录下,名称更改为ftp_sample.c。
带括号表示可写可不写,不写的话是以该文件名上传。
3、最后附上ftp常用命令,如下所示:
FTP>open [ftpservername] #和指定的远程Linux FTP服务器连接。
FTP>user [username] [password] #使用指定远程Linux FTP服务器的用户登录。
FTP>pwd #显示远程Linux FTP服务器上的当前路径。
FTP>ls #列出远程Linux FTP服务器上当前路径下的目录和文件。
FTP>dir #列出远程Linux FTP服务器上当前路径下的目录和文件(同上)。
FTP>mkdir [foldname] #在远程Linux FTP服务器上当前路径下建立指定目录。
FTP>rmdir [foldname] #删除远程Linux FTP服务器上当前路径下的指定目录。
FTP>cd [foldname] #更改远程Linux FTP服务器上的工作目录。
FTP>delete [filename] #删除远程Linux FTP服务器上指定的文件。
FTP>rename [filename] [newfilename] #重命名远程Linux FTP服务器上指定的文件。
FTP>close #从远程Linux FTP服务器断开但保留FTP命令参数提示。
FTP>disconnect #从远程Linux FTP服务器断开但保留FTP命令参数提示(同上)。
FTP>bye #结束和远程Linux FTP服务器的连接。
FTP>quit #结束和远程Linux FTP服务器的连接(同上)。
FTP>! #直接从远程Linux FTP服务器进入到本地shell中。
FTP>exit #(接上步)从本地shell环境中返回到远程Linux FTP服务器环境下。
FTP>!ls #列出本地机器上当前路径下的目录和文件。
FTP>lcd [foldname] #更改本地机器的工作目录。
FTP>? #显示ftp命令说明。
FTP>help #显示ftp命令说明(同上)。
至此。
FTP的命令行格式为:
ftp -v -d -i -n -g [主机名] ,其中
-v 显示远程服务器的所有响应信息;
-n 限制ftp的自动登录,即不使用;.n etrc文件;
-d 使用调试方式;
-g 取消全局文件名。
FTP使用的内部命令如下(中括号表示可选项):
![cmd[args]] #在本地机中执行交互shell,exit回到ftp环境,如:!ls.zip
$ macro-ame[args] # 执行宏定义macro-name。
account[password] #提供登录远程系统成功后访问系统资源所需的补充口令。
append local-file[remote-file] #将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。
ascii #使用ascii类型传输方式。
bell #每个命令执行完毕后计算机响铃一次。
bin #使用二进制文件传输方式。
bye #退出ftp会话过程。
case #在使用mget时,将远程主机文件名中的大写转为小写字母。
cd remote-dir #进入远程主机目录。
cdup #进入远程主机目录的父目录。
chmod mode file-name #将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。
close #中断与远程服务器的ftp会话(与open对应)。
cr #使用asscii方式传输文件时,将回车换行转换为回行。
delete remote-file #删除远程主机文件。
debug[debug-value] #设置调试方式, 显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。
dir[remote-dir][local-file] #显示远程主机目录,并将结果存入本地文件
disconnection #同close。
form format #将文件传输方式设置为format,缺省为file方式。
get remote-file[local-file] #将远程主机的文件remote-file传至本地硬盘的local-file。
glob #设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。
hash #每传输1024字节,显示一个hash符号(#)。
help[cmd] #显示ftp内部命令cmd的帮助信息,如:help get。
idle[seconds] #将远程服务器的休眠计时器设为[seconds]秒。
image #设置二进制传输方式(同binary)。
lcd[dir] #将本地工作目录切换至dir。
ls[remote-dir][local-file] #显示远程目录remote-dir,并存入本地文件local-file。
macdef macro-name #定义一个宏,遇到macdef下的空行时,宏定义结束。
mdelete[remote-file] #删除远程主机文件。
mdir remote-files local-file #与dir类似,但可指定多个远程文件,如 :mdir *.o.
.zipoutfile 。
mget remote-files #传输多个远程文件。
mkdir dir-name #在远程主机中建一目录。
mls remote-file local-file #同nlist,但可指定多个文件名。
mode[modename] #将文件传输方式设置为modename, 缺省为stream方式。
modtime file-name #显示远程主机文件的最后修改时间。
mput local-file #将多个文件传输至远程主机。
newer file-name #如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
nlist[remote-dir][local-file] #显示远程主机目录的文件清单,并存入本地硬盘的local-file。
nmap[inpattern outpattern] #设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换,如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX机的情况。
ntrans[inchars[outchars]] #设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。
open host[port] #建立指定ftp服务器连接,可指定连接端口。
passive #进入被动传输方式。
prompt #设置多个文件传输时的交互提示。
proxy ftp-cmd #在次要控制连接中,执行一条ftp命令,该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。
put local-file[remote-file] #将本地文件local-file传送至远程主机。
pwd #显示远程主机的当前工作目录。
quit #同bye,退出ftp会话。
quote arg1,arg2… #将参数逐字发至远程ftp服务器,如:quote syst.
recv remote-file[local-file] #同get。
reget remote-file[local-file] #类似于get,但若local-file存在,则从上次传输中断处续传。
rhelp[cmd-name] #请求获得远程主机的帮助。
rstatus[file-name] #若未指定文件名,则显示远程主机的状态, 否则显示文件状态。
rename[from][to] #更改远程主机文件名。
reset #清除回答队列。
restart marker #从指定的标志marker处,重新开始get或put,如:restart 130。
rmdir dir-name #删除远程主机目录。
runique #设置文件名只一性存储,若文件存在,则在原文件后加后缀.1, .2等。
send local-file[remote-file] #同put。
sendport #设置PORT命令的使用。
site arg1,arg2… #将参数作为SITE命令逐字发送至远程ftp主机。
size file-name #显示远程主机文件大小,如:site idle 7200。
status #显示当前ftp状态。
struct[struct-name] #将文件传输结构设置为struct-name, 缺省时使用stream结构。
sunique #将远程主机文件名存储设置为只一(与runique对应)。
system #显示远程主机的操作系统类型。
tenex #将文件传输类型设置为TENEX机的所需的类型。
tick #设置传输时的字节计数器。
trace #设置包跟踪。
type[type-name] #设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。
umask[newmask] #将远程服务器的缺省umask设置为newmask,如:umask 3
user user-name[password][account] #向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email。
verbose #同命令行的-v参数,即设置详尽报告方式,ftp 服务器的所有响 应都将显示给用户,缺省为on.
?[cmd] #同help.

FTP自动登录批量下载文件
从ftp服务器www.magentonotes.com上的/home/data 到本地的/home/databackup
!/bin/bash
ftp -v -n www.magentonotes.com
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
mget *
close
bye

!/bin/bash

文件下载

cd #在远程机上改变工作目录

lcd #在本地机上改变工作目录

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

close #终止当前的 ftp 会话

bye #退出ftp会话过程。

hash #每次传输完数据缓冲区中的数据后就显示一个#号

prompt #设置多个文件传输时的交互提示。

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/loacl/sbin:~/bin
export PATT
ftp -v -n $1
user $2 $3
binary
cd $4
lcd $5
prompt
mget $6
close
bye

FTP自动登录批量上传文件
从ftp服务器www.magentonotes.com上的/home/data 到本地的/home/databackup

!/bin/bash

ftp -v -n www.magentonotes.com << END
user guest 123456
binary
hash
cd /home/data
lcd /home/databackup
prompt
mput *
bye

END
linux下自动登陆ftp下载文件
操作系统:linux
说明:使用了expect,参数为ftp服务器地址和要下载的文件名
参数:lindex $argv 0 读取ftp服务器ip地址
lindex $argv 1 读取要下载的文件名
编辑:

vi ftp.sh

spawn ftp [lindex $argv 0]
expect \”Name ():\”
send \”anonymousr\”
expect \”Password:
\”
send \”r\”
expect \”ftp>\”
send \”binaryr\”
expect \”ftp>\”
send \”hashr\”
expect \”ftp>\”
send \”get [lindex $argv 1]r\”
expect \”* Transfer complete.\”
send \”exitr\”

执行方法:expect ftp.sh 服务器ip地址 文件名称
(expect ftp.sh www.magentonotes.com filename.txt )
扩展:可以根据需要把用户名和密码也作为参数输入里边,这个根据个人需求去做

Comments on this entry are closed.

Previous post:

Next post: