我正在尝试编写一个每天都会触发的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服务器。
答案 0 :(得分: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行将添加到您的代码中。第一行是昨天的日期。然后将其与文件的时间戳进行比较。如果不匹配,则简单地跳过该文件。