2013-01-02 116 views
1

我正在嘗試編寫一個shell腳本,它將每天觸發並將昨天的日誌文件從多個服務器轉移到ftp服務器。shell腳本將昨天的日誌文件轉移到ftp服務器

到目前爲止,我設法複製它們,並根據命名約定(必須有YYYYMMDD)將它們重命名爲另一個目錄,但不在FTP上。

這裏是我到目前爲止有:

#!/bin/sh 

path=/home/log/ 
backupPath=/home/new_directory/log 

if [ ! -d $backupPath ]; then 
echo "$backupPath does not exist. Create it" 
mkdir $backupPath 
fi; 

server=$(uname -n) 
for filename in $path/*string*; do  

timestamp=$(date -d "$(stat -c %y "$filename")" +%Y%m%d) 

basename=$(basename $filename) 

newfilename=$(echo "$basename" | sed s/access/access_"$timestamp"_"$server"/g) 

cp $filename $backupPath"/$newfilename" 
echo "$filename moved to $backupPath/$newfilename" 

done 

現在我需要修改它只是昨天的好格式的文件複製到FTP服務器。

回答

1

像這樣(未測試):

timestamp=$(date -d "$(stat -c %y "$filename")" +%Y%m%d) 

yday=$(date -d "yesterday" +%Y%m%d) 
[ "$yday" != "$timestamp" ] && continue 

basename=$(basename $filename) 

的2行中的中間是要被添加到您的代碼。第一行是昨天的日期。然後將其與文件的時間戳進行比較。如果它不匹配,則簡單地跳過該文件。

+0

謝謝大師!那麼FTP部分呢? – julien

+1

要知道如何在腳本中的ftp,你可以參考這個:http://users.telenet.be/mydotcom/howto/ftp/ftp_script_linux.htm – Guru

相關問題