2015-01-10 50 views
1

我想創建一個bash腳本或PHP腳本從ftp服務器下載CSV文件並在downloadind文件後添加* .bak擴展名。我將每10分鐘通過cron作業自動執行。bash腳本從ftp服務器獲取文件並在下載後重命名文件

我開始:

#!/bin/bash  
HOST=XXX.YYY.ZZZ.OOO 
USERFTP=user 
PASSWORD=xxx 
PORT=2222 
cd /home/sysadmin/testftp 
ftp -inv $HOST 2222 <<EOF 
quote USER $USERFTP 
quote PASS $PASSWORD 
cd /home/ftp/ 

,我需要包括thise「for」循環

for f in $(ls) do 
if [ $(echo $f|egrep '\.(csv|CSV)$') ] 
then 
mget $f 
mv $f $f.bak 
fi 
done` 

我不知道如何納入循環到bash腳本或者如果它是更容易地創建一個PHP腳本?

<?php 
$local_file = 'local.zip'; 
$server_file = 'server.zip'; 
$conn_id = ftp_connect($ftp_server); 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
$local_file 
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) { 
echo "Le fichier $local_file a été écris avec succès\n"; 
} else { 
echo "error\n"; 
} 
ftp_close($conn_id); 
?> 

如何將for循環包含到php腳本中?

問候:-)

+0

您是否希望推薦是否更喜歡一種方法? –

+0

scp或rsync可能會更簡單,然後ftping,如果你選擇ftp你想要在php或bash中都做不到這兩個。 –

+0

可以在協處理器中運行ftp併發送命令並閱讀其響應。但CurlFtpFs可能是更好的解決方案 – Jasen

回答

-1
#!/bin/bash 
curlftpfs [email protected]:2222 /mnt/ftp 
cd /mnt/ftp 
for f in $(ls) do 
if [ $(echo $f|egrep '\.(csv|CSV)$') ] 
then 
scp $f scp -i ~/.ssh/id_rsa [email protected]:/home/ipad 
mv $f $f.bak 
fi 
fusermount -u /mnt/ftp 
done 

你看起來不錯?

+0

如果你解釋這實際上在做什麼,那將會更有幫助,這樣OP會知道發生了什麼並理解它:) – Emil

+0

實際上它不是OPs問題的答案:「我如何將for循環包含到php腳本中? 「 – OzrenTkalcecKrznaric

+0

我只想從ftp服務器複製並重命名文件!所以最好的辦法是我認爲curlftps。 – jimbolino

相關問題