2010-03-23 159 views
0

我想我已經寫了可能一個shell腳本我的整個生活,我甚至不知道是否有可能這樣做,但我想寫一個腳本,將ftp目錄的內容,一個一次。也就是說,它將ftp一個,然後關閉連接,然後ftp第二,然後關閉等。這是因爲目錄中可能有多達五個文件,每個文件最小爲2GB。立即將它們全部FTP,總是會導致重置連接。我認爲如果我可以通過部分文件名進行匹配,那麼也許這將有所幫助,因爲它們都以相同的方式命名。shell腳本模式匹配?

所以,在一個目錄,這將有:

SampleFileA_20100322_1.txt 
SampleFileA_20100322_2.txt 
SampleFileB_20100322_1.txt 
SampleFileC_20100322_1.txt 

我想第一個FTP SampleFileA_xxxx_1,然後SampleFileA_xxxx_2等,這是當前的FTP腳本,它會嘗試下載的一切都在一旦...

#!/bin/bash 
REMOTE='ftp.EXAMPLE.com' 
USER='USERNAME' 
PASSWORD='PASSWORD' 
FTPLOG='/tmp/ftplog' 
date >> $FTPLOG 

ftp -in $REMOTE <<EOF 
_FTP>>$FTPLOG 
quote USER $USER 
quote PASS $PASSWORD 
bin 
cd download 
mget * 
quit 
_FTP 
:wq! 
+0

'mget *'應該是順序獲取文件,而不是同時獲取文件。連接何時重置? (例如,立即?在第一個文件的中間?在第一個文件之後?) – Isaac 2010-03-23 12:55:52

+0

如果您的連接重置,則它與您的網絡設置有關。有時如果您之間有防火牆,防火牆可能會啓用此類超時。或者有時候是因爲你的kernet的tcp超時設置等等。 – ghostdog74 2010-03-23 13:03:41

回答

1

根據你的問題,我認爲你需要像

files=`ls Sample*txt` 

for file in $files 
do 
    run_ftp_function $file 
done 

你需要設置「run_ftp_function」來發送(像你已經有的)使用$ 1作爲文件發送