1

我正在尝试编写一个每天都会触发的 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 服务器。

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 行将添加到您的代码中。第一行获取昨天的日期。然后将其与文件的时间戳进行比较。如果不匹配,则简单地跳过该文件。

于 2013-01-02T12:57:28.410 回答