写一个scp脚本监测/home/d5000/sichuan/data/pms_message下是否有最新文件,如果有则将文件拷贝到msdbus1:/home/d5000/sichuan/cimsvg/out下,并输出日志
时间: 2023-06-28 21:05:14 浏览: 82
以下是一个简单的scp脚本,可以实现你想要的功能:
```
#!/bin/bash
# 定义本地监测目录和远程目录
local_dir=/home/d5000/sichuan/data/pms_message
remote_dir=msdbus1:/home/d5000/sichuan/cimsvg/out
# 定义日志文件路径
log_file=/var/log/scp.log
# 获取最新文件
latest_file=$(ls -t $local_dir | head -1)
# 如果存在最新文件,则进行拷贝
if [ ! -z "$latest_file" ]; then
scp $local_dir/$latest_file $remote_dir >> $log_file 2>&1
fi
```
使用方法:
1. 将以上代码保存为一个.sh文件,例如`scp_monitor.sh`。
2. 给文件添加可执行权限:`chmod +x scp_monitor.sh`。
3. 在命令行中运行该脚本:`./scp_monitor.sh`。
4. 脚本会每次检查本地目录中是否有最新文件,如果有则拷贝到远程目录,并将操作记录写入日志文件中。
需要注意的是,运行该脚本的用户需要具备将文件拷贝到远程目录的权限。另外,日志文件的路径可以根据实际情况进行修改。
相关问题
写一个scp脚本监测/home/d5000/sichuan/data/pms_message下是否有最新生成文件
#!/bin/bash
# 设置监测目录
dir="/home/d5000/sichuan/data/pms_message"
# 获取监测目录中的最新文件
newest_file=$(ls -t "$dir" | head -1)
# 判断是否存在最新文件
if [[ -n "$newest_file" ]]; then
echo "最新文件为:$newest_file"
else
echo "没有最新文件"
fi
# 可以在此基础上添加其他逻辑操作
写一个scp脚本监测/home/d5000/sichuan/data/pms_message下是否有生成文件,如果有则将文件拷贝到msdbus1:/home/d5000/sichuan/cimsvg/out下,并输出日志
下面是一个简单的SCP脚本,可以监测指定目录下是否有新的文件,如果有则将其拷贝到目标服务器,并输出日志。
```bash
#!/bin/bash
# 监测的目录
SRC_DIR=/home/d5000/sichuan/data/pms_message
# 目标服务器信息
DEST_HOST=msdbus1
DEST_USER=d5000
DEST_DIR=/home/d5000/sichuan/cimsvg/out
# 日志文件路径
LOG_FILE=/var/log/scp_monitor.log
# 检查目录是否存在
if [ ! -d "$SRC_DIR" ]; then
echo "[ERROR] 目录 $SRC_DIR 不存在" >> "$LOG_FILE"
exit 1
fi
# 监测目录中的新文件
while true; do
NEW_FILE=$(inotifywait -q -e create "$SRC_DIR" | awk '{print $3}')
# 输出日志
echo "发现新文件: $NEW_FILE" >> "$LOG_FILE"
# 拷贝文件到目标服务器
scp "$SRC_DIR/$NEW_FILE" "$DEST_USER@$DEST_HOST:$DEST_DIR" >> "$LOG_FILE" 2>&1
# 输出完成信息
echo "已将文件 $NEW_FILE 拷贝到 $DEST_HOST:$DEST_DIR" >> "$LOG_FILE"
done
```
上述脚本使用 inotifywait 工具监测指定目录下是否有新的文件生成,如果有则使用 SCP 命令将其拷贝到目标服务器,并将操作日志输出到文件中。你可以根据实际需求修改目录路径、目标服务器信息和日志路径。
阅读全文