A. linux怎麼get ftps的數據
FTP連接
1
打開終端, 滑鼠點擊, 或者輸入快捷鍵(Ctrl+Alt+T)
2
Linux ftp命令的一般格式如下:$ ftp 主機名/IP,其中「主機名/IP」是所要連接的遠程機的主機名或IP地址。在命令行中,主機名屬於選項,如果指定主機名,ftp將試圖與遠程機的ftp服務程序進行連接;
3
如果沒有指定主機名,ftp將給出提示符,等待用戶輸入命令:$ ftp,ftp >,此時在ftp>提示符後面輸入open命令加主機名或IP地址,將試圖連接指定的主機。
4
不管使用哪一種方法,如果連接成功,需要在遠程機上登錄。用戶如果在遠程機上有帳號,就可以通過ftp使用這一帳號並需要提供口令。在遠程機上的用戶帳號的讀寫許可權決定該用戶在遠程機上能下載什麼文件和將上載文件放到哪個目錄中
END
FTP命令
1
最常用的命令有:
ls 列出遠程機的當前目錄
cd 在遠程機上改變工作目錄
lcd 在本地機上改變工作目錄
ascii 設置文件傳輸方式為ASCII模式
binary 設置文件傳輸方式為二進制模式
close 終止當前的ftp會話
hash 每次傳輸完數據緩沖區中的數據後就顯示一個#號
get(mget) 從遠程機傳送指定文件到本地機
put(mput) 從本地機傳送指定文件到遠程機
open 連接遠程ftp站點
斷開與遠程機的連接並退出ftp
? 顯示本地幫助信息
! 轉到Shell中
B. linux ftp下如何get多個目錄的文件
1、查看是否安裝vsftpd,如果沒銷陵慶有用yum安裝,本系統沒有安裝。
C. 用shell的linux伺服器 .sh插件怎麼從遠程ftp伺服器下載文件
//ftpput.sh
[cpp] view plain
#!/bin/sh
#FileName:ftpput.sh
#Function:從本地客戶端向ftp伺服器上傳一個文件
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20
#$#表示傳遞給此Shell腳本的參數個數
#-ne表示不等於
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi
#IP表示ftp的伺服器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME獲取本地文件全路徑名
FULLNAME=$1
#DESTDIR獲取需要上傳的ftp遠程目錄路徑
DESTDIR=$2
#basename返回一個路徑中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#當local_filename=`basename $FULLNAME`
#最終local_filename="test.log"
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp伺服器的路徑,以及保存後的文件名
DESTFILE=$DESTDIR/$local_filename
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT
exit 0
//注釋:
[cpp] view plain
#!/bin/sh
#FileName:ftpput.sh
#Function:從本地客戶端向ftp伺服器上傳一個文件
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20
#$#表示傳遞給此Shell腳本的參數個數
#-lt表示小於
#-eq表示等於
#-ne表示不等於
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi
#IP表示ftp的伺服器ip地址
#IP=127.0.0.1
IP=192.168.6.1
#FULLNAME獲取本地文件全路徑名
FULLNAME=$1
#DESTDIR獲取需要上傳的ftp遠程目錄路徑
DESTDIR=$2
#basename返回一個路徑中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#當local_filename=`basename $FULLNAME`
#最終local_filename="test.log"
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp伺服器的路徑,以及保存後的文件名
DESTFILE=$DESTDIR/$local_filename
#-i表示在多個文件傳輸期間關閉交互提示
#-n表示禁止自動登錄到初始連接
#<<FTPIT 和最後的 FTPIT:術語叫:當前文檔here documents. here document 就是一段特殊目的的代碼塊,
#它使用I/O重定向的形式來將一個命令序列傳遞到一個交互程序或者命令中,比如ftp、cat,或者ex文本編輯器.
#本句可以理解從<<FTPIT開始以非對話模式的ftp連接,直到輸入FTPIT為止的所有命令.
#當然FTPIT這個名字是可以隨便取的,不一定必須是FTPIT,可以取其它的名字。
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
#連接到指定ftp伺服器上
open $IP
#連接到指定ftp伺服器上,並指定埠
#open $IP $PORT
#登陸ftp伺服器上的用戶名和密碼
#user username password
user Sunrier redhat
#bin表示以二進制方式傳輸
#bin等價於bi,binary等
#另一種方式傳輸是ascii,默認情況下,將文件傳輸類型設置為ASCII
bin
#主動模式的FTP是指伺服器主動連接客戶端的數據埠,被動模式的FTP是指伺服器被動地等待客戶端連接自己的數據埠
#被動模式的FTP通常用在處於防火牆之後的FTP客戶訪問外界FTP伺服器的情況.
#因為在這種情況下,防火牆通常配置為不允許外界訪問防火牆之後主機,而只允許由防火牆之後的主機發起的連接請求通過.
#因此在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作.
#passive表示設置為被動模式的FTP
passive
#cd表示更改ftp伺服器上(即遠程計算機)的工作目錄
cd /home/remote/log/ftpfile
#lcd表示更改本地計算機的工作目錄
#lcd /home/Sunrier/Proj/log/
#put local_file [ remote_file ]
#其中local_file是指定要復制的本地文件,remote_file是指定要復制的遠程計算機上的文件名,
#remote_file為可選項,如果不指定的話是和本地計算機上的文件名同名.
#put表示把本地路徑下的文件復制到FTP伺服器(遠程計算機)上設置的路徑下的文件
put $FULLNAME $DESTFILE
#quit表示結束與遠程計算機的FTP會話,並退出FTP.
#還有個等價的命令為bye(或by)結束與遠程計算機的FTP會話並退出FTP
quit
#here document塊結束
FTPIT
#正式寫這個Shell腳本時,here document中的#和空行都會執行,
#所以為了消除警告最好去掉here document塊中#開頭的語句以及空行,
#暫時我還沒有找到here document中有效的注釋語句的方法.
exit 0
//ftpget.sh
[cpp] view plain
#!/bin/sh
#FileName:ftpget.sh
#Function:從ftp伺服器上下載一個文件到本地計算機上
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20
#$#表示傳遞給此Shell腳本的參數個數
#-ne表示不等於
if [ $# -ne 2 ]
then
echo "Usage $0 <remote_dir/filename> <local_dir>"
exit 1
fi
#IP表示ftp的伺服器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME獲取從ftp伺服器上下載的文件全路徑名
FULLNAME=$1
#DESTDIR獲取從ftp伺服器上下載的文件所存放的本地計算機的目錄路徑
DESTDIR=$2
#remote_filename獲取從ftp伺服器上下載的文件名
remote_filename=`basename $FULLNAME`
#DESTFILE表示下載文件所存放的本地路徑,以及本地保存後的文件名
DESTFILE=$DESTDIR/$remote_filename
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
cd /home/remote/log/ftpfile
get $FULLNAME $DESTFILE
quit
FTPIT
exit 0
#get remote_file [ local_file ]
#remote_file是指定要復制的文件,local_file是指定本地計算機上的文件名,
#local_file為可選項,沒有指定的話則跟remote_file同名。
//20120726改進版本
[cpp] view plain
#!/bin/sh
#FileName:ftpput.sh
#Function:從本地客戶端向ftp伺服器上傳一個文件(添加遠程目錄是否存在判斷功能)
#Version:V0.2
#Author:Sunrier
#Date:2012-07-26
#$#表示傳遞給此Shell腳本的參數個數
#-ne表示不等於
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi
#IP表示ftp的伺服器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME獲取本地文件全路徑名
FULLNAME=$1
#DESTDIR獲取需要上傳的ftp遠程目錄路徑
DESTDIR=$2
#dirname返迴路徑中的目錄部分
#DESTDIR="/home/Sunrier/Proj/log/test.log";
#當PREDESTDIR=`dirname $DESTDIR`
#最終PREDESTDIR="/home/Sunrier/Proj/log"
PREDESTDIR=`dirname $DESTDIR`
SUFFIXDESTDIR=`basename $DESTDIR`
LOCALDIR=`dirname $FULLNAME`
#basename返回一個路徑中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#當local_filename=`basename $FULLNAME`
#最終local_filename="test.log"
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp伺服器的路徑,以及保存後的文件名
DESTFILE=$DESTDIR/$local_filename
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
dir $PREDESTDIR $LOCALDIR/tmp.txt
quit
FTPIT
#find $LOCALDIR -name "tmp.txt" -type f | xargs grep "^d.*$SUFFIXDESTDIR$"
#find . -name "tmp.txt" -type f | xargs grep "^d.*$SUFFIXDESTDIR$"
#find . ! -name "." -type d -prune -o -type f -iname "*tmp.txt" -print | xargs grep "^d.*$SUFFIXDESTDIR$"
#grep "^d.*$SUFFIXDESTDIR$" \$LOCALDIR/tmp.txt
#grep後面查找字元兩邊加不加引號效果相同
grep ^d.*$SUFFIXDESTDIR$ $LOCALDIR/tmp.txt >/dev/null 2>&1
#$?表示上一個命令的運行結果,0表示成功,其它值表示失敗
#if [ $? != 0 ]
if [ $? -ne 0 ]
then
rm $LOCALDIR/tmp.txt
exit 1
fi
#mkdir創建遠程目錄
#mkdir $DESTDIR
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT
rm $LOCALDIR/tmp.txt
exit 0
[cpp] view plain
注:
FTP伺服器的啟動:
[root@localhost ~]# service vsftpd start
為 vsftpd 啟動 vsftpd: [確定]
FTP伺服器的埠一般默認為21:
[root@localhost ~]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:523 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:50000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:601 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
[root@localhost ~]#
在使用system執行Shell腳本時,如system("ftpput.sh"),system返回值低8位為system執行腳本所接收到的信號值,9~16位為Shell腳本所設置的exit退出值
D. linux怎麼讀ftp的文件
你好,linux無法在線讀取FTP上面的文件,唯一方式是把文件下載下來查看。
我只能跟你這樣解釋了,望能採納。謝謝
E. Linux下如何獲取FTP文件名和大小
path=''敏純鉛 #這里的橋好$1,換成你需要的路徑名褲晌,或者你不換,通過shell的參數傳入
for dirlist in $(find ${path} -name *.xml)
do
echo ${dirlist}
查找,刪除,比較都在這做
done
F. linux ftp 下 怎麼看 文本文件
如果是通過命令行互動式的:
ftp server_ip
提示輸入用戶名:輸入你的ftp用戶名
提示輸入密碼:輸入ftp用戶的密碼
切換為bin模式:b或者bin命令
用get命令接完整文件名:get your_file
用wget+通配符模式獲取多個文件:wget *.txt
退出ftp:bye
G. linux下ftp命令詳解
ftp(file transfer protocol)
功能說明:設置文件系統相關功能。
語法:ftp [-dignv][主機名稱或IP地址]
補充說明:FTP是ARPANet的標准文件傳輸協議,該網路就是現今Internet的前身。
參數: 《Linux就該這么學》
-d 詳細顯示指令執行過程,便於排錯或分析程序執行的情形。
-i 關閉互動模式,不詢問任何問題。
-g 關閉本地主機文件名稱支持特殊字元的擴充特性。
-n 不使用自動登陸。
-v 顯示指令執行過程。
1. 連接ftp伺服器
格式:ftp [hostname| ip-address]
a)在linux命令行下輸入:
ftp 192.168.1.1
b)伺服器詢問你用戶名和密碼,分別輸入用戶名和相應密碼,待認證通過即可。
c)也可以先輸入ftp
ftp>
d)然後在輸入要連接的IP
ftp>open 192.168.1.1
2. 下載文件
下載文件通常用get和mget這兩條命令。
a) get
格式:get [remote-file] [local-file]
將文件從遠端主機中傳送至本地主機中。
如要獲取遠程伺服器上/usr/your/1.htm,則
ftp> get /usr/your/1.htm 1.htm (回車)
b) mget
格式:mget [remote-files]
從遠端主機接收一批文件至本地主機。
如要獲取伺服器上/usr/your/下的所有文件,則
ftp> cd /usr/your/
ftp> mget *.* (回車)
此時每下載一個文件,都會有提示。如果要除掉提示,則在mget *.* 命令前先執行:prompt off
注意:文件都下載到了linux主機的當前目錄下。比如,在/usr/my下運行的ftp命令,則文件都下載到了/usr/my下。
3.上傳文件
a) put
格式:put local-file [remote-file]
將本地一個文件傳送至遠端主機中。
如要把本地的1.htm傳送到遠端主機/usr/your,並改名為2.htm
ftp> put 1.htm /usr/your/2.htm (回車)
b) mput
格式:mput local-files
將本地主機中一批文件傳送至遠端主機。
如要把本地當前目錄下所有html文件上傳到伺服器/usr/your/ 下
ftp> cd /usr/your (回車)
ftp> mput *.htm(回車)
H. Linux系統下怎麼考取ftP中的文件
#ftp頌旁host-name
>cddir-name
>getfile-name
一般這樣就可以野山橡了唯仿.
I. linux下用ftp命令連接到ftp伺服器應該如何查看伺服器上的目錄文件數
1.Linux下啟動ftp
ls -l 普通文件就是以 - 開頭,文件夾以 d 開頭,grep 後面接正則表達式:^- 以 - 開頭的匹配。
(9)linuxftp獲取文件擴展閱讀:
1.查看當前目錄下的文件數量(不包含子目錄中的文件):
ls -l|grep "^-"| wc -l
2. 查看當前目錄下的文件數量(包含子目錄中的文件):
ls -lR|grep "^-"| wc -l
3.查看當前目錄下的文件夾目錄個數,(不包含子目錄中的目錄):
ls -l|grep "^d"| wc -l
4.查詢當前路徑下的指定前綴名的目錄下的所有文件數量 例如:統計所有以「20161124」開頭的目錄下的全部文件數量:
ls -lR 20161124*/|grep "^-"| wc -l
J. cftpfilefind怎麼獲取linux ftp伺服器文件列表呢是不是這個cftpfilefi
問題: ftp客戶端下載目錄數據很慢,而此目錄是掛載了NFS共享目錄
現象: 使用ftp客戶端訪問nfs目錄,下載上傳速度 0.7kb/s, 而且對於零散的小文件(總絕旁共幾百K),
每次傳輸新文件, 都會有30-40s的等待時間,400k文件要5分鍾。
ftp配置如下:
[root@IDC-D-144 vsftpd]# cat vsftpd.conf|grep -v '#'
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ls_recurse_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
listen=YES
tcp_wrappers=YES
chroot_list_enable=YES >>>>> 啟用渣態改變用戶登錄默認目錄
chroot_list_file=/etc/vsftpd/chroot_list >>>>> 允許登錄更改目錄的用戶列表
user_config_dir=/etc/vsftpd/vsftpd_user_conf >>>>>> 目錄下記錄著每個用戶的默認登錄地址
[root@IDC-D-144 vsftpd]# cat chroot_list
suns
hanjun
[root@IDC-D-144 vsftpd]#
[root@IDC-D-144 vsftpd]# cd vsftpd_user_conf/
[root@IDC-D-144 vsftpd_user_conf]# ls
hanjun suns
[root@IDC-D-144 vsftpd_user_conf]# cat hanjun
local_root=/usr/local/apache2059/htdocs/hipiao/
[root@IDC-D-144 vsftpd_user_conf]#
這樣用戶hanjun登錄就會直接進入目錄 /usr/local/apache2059/htdocs/hipiao/
vsftpd 的部分就是這樣。
下載上傳速度慢也是想了很多辦法,是不是內外網問題? 是不是路由設置問題? 。。。
最後查到可能與NFS有關。 出現幾個服務如宏源名:nfslock 、 portmap 、rpc
講一下NFS的埠連接知識:
因為NFS支持的功能相當的多,而不同的功能都會使用不同的程序來啟動,沒啟動一個功能就會啟用一些
埠來傳輸資料,因此,NFS的功能所隨影的埠沒有固定住,而是隨機取用一些未被使用的小於1024的
埠來作為傳輸之用。但如此一來又造成用戶端想要連上伺服器時的困擾,因為用戶端得要知道伺服器端的
相應埠才能夠連接吧。