1

毎日トリガーされ、昨日のログファイルを複数のサーバーから 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 サーバーにコピーするように変更する必要があります。

4

1 に答える 1

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行がコードに追加されます。1行目は昨日の日付になります。次に、これがファイルのタイムスタンプと比較されます。一致しない場合、ファイルは単にスキップされます。

于 2013-01-02T12:57:28.410 に答える