基于Centos7主机,每隔1小时将192.168.1.8上/data/web/shell/目录自动同步到192.168.1.9的/data/backup下,请写出实现步骤和具体命令?
时间: 2023-08-19 10:04:06 浏览: 174
可以使用 Linux 下的 rsync 命令来实现两台服务器之间的文件同步。以下是具体的实现步骤和命令:
1. 在 192.168.1.9 上创建备份目录
```
mkdir -p /data/backup
```
2. 在 192.168.1.8 上安装 rsync
```
yum install -y rsync
```
3. 编写同步脚本
在 192.168.1.8 上创建一个同步脚本 sync.sh,内容如下:
```
#!/bin/bash
rsync -avz --delete /data/web/shell/ 192.168.1.9:/data/backup/
```
这个脚本会使用 rsync 命令将 /data/web/shell/ 目录同步到 192.168.1.9 的 /data/backup 目录下,--delete 参数表示删除 192.168.1.9 上已经不存在的文件。
4. 设置定时任务
使用 crontab 命令来设置定时任务,每隔 1 小时执行一次同步脚本:
```
crontab -e
```
在编辑器中添加以下内容:
```
0 * * * * /bin/bash /path/to/sync.sh
```
保存并退出,这样就设置好了定时任务。
注意,需要将 /path/to/sync.sh 替换为实际的脚本路径。另外,需要确保 192.168.1.8 和 192.168.1.9 之间可以相互访问,并且已经设置好了 ssh 公钥认证,以免每次同步都需要输入密码。
相关问题
centos7写一个监控系统的shell,要求如下 cpu使用率超过80%(Shell变量单独配置)并且持续60秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg接口,传入以下JSON信息 服务器ip(Shell变量单独配置)+当前CPU使用率+持续时间+CPU占用率最高的前3个进程名字以及文件路径 硬盘使用率超过90%(Shell变量单独配置)并且持续90秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg接口,传入以下JSON信息 服务器ip(Shell变量单独配置)+当前硬盘使用率+持续时间+磁盘占用最大的3个文件以及大小(以KB、GB、TB等为单位,精确到1位小数)和文件路径 内存使用率超过70%(Shell变量单独配置)并且持续70秒钟(Shell变量单独配置)以上使用Curl post json方式调用http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg接口,传入以下JSON信息 服务器ip(Shell变量单独配置)+当前内存使用率+持续时间+内存占用率最高的前3个进程名字以及文件路径 脚本持续监控,每隔N秒(Shell变量单独配置)执行一次,要求直接给出最完美的shell代码,仔细检查可能存在的语法错误,必需交付准确无错误的代码,一次性说完,无需任何解释
```
#!/bin/bash
# 配置参数
cpu_threshold=80
cpu_duration=60
disk_threshold=90
disk_duration=90
memory_threshold=70
memory_duration=70
interval=10
ip="192.168.220.1"
port="18181"
path="/jeecg-boot/luodiye/sendMsg"
url="http://$ip:$port$path"
# 监控函数
monitor() {
local threshold=$1
local duration=$2
local resource=$3
local process=$4
local process_command="ps aux --sort=-%cpu | awk '{print \$0\" \"NR}' | grep -v 'awk' | awk '\$11>$threshold {print \$0}' | head -3"
local resource_command="awk '\$1>$threshold {print \$0}' /proc/stat | awk '{print \$1}' | awk '{s+=$1} END {print s/4}'"
while :; do
local count=0
local process_name=''
local process_path=''
local resource_percent=0
local resource_percent_duration=0
while :; do
# 获取当前资源使用率
resource_percent=$(eval $resource_command)
if [ $(echo "$resource_percent > $threshold" | bc) -eq 1 ]; then
let count++
resource_percent_duration=$count
sleep 1
else
count=0
resource_percent_duration=0
fi
# 获取当前占用资源最高的前3个进程
process_name=$(eval $process_command | awk '{print $11}')
process_path=$(eval $process_command | awk '{print $12}')
# 超过阈值且持续时间超过设定值,发送请求
if [ $count -ge $duration ]; then
local data="{\"server_ip\":\"$(hostname -I)\",\"resource\":\"$resource\",\"resource_percent\":\"$resource_percent\",\"duration\":\"$resource_percent_duration\",\"process_name\":\"$process_name\",\"process_path\":\"$process_path\"}"
curl -H "Content-Type: application/json" -X POST -d $data $url
exit
fi
done
done
}
# 启动监控
monitor $cpu_threshold $cpu_duration "cpu" "ps aux --sort=-%cpu | awk '{print $0\" \"NR}' | grep -v 'awk' | awk '\$11>$cpu_threshold {print $0}' | head -3" &
monitor $disk_threshold $disk_duration "disk" "du -a / 2
centos7 写一个shell脚本,将当前主机IP(Shell变量配置)、CPU使用率(纯数字)、内存总量和使用量(单位GB)、硬盘总量和使用量(单位GB)使用curl json方式调用http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg(Shell变量配置),脚本每隔N秒钟执行一次(Shell变量配置),curl 超时时间为5秒,调用失败输出当前时间和错误信息到当前目录monitor_error.log日志文件(没有则创建),脚本循环调用
```bash
#!/bin/bash
# 定义变量
ip=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
cpu=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -f1 -d"%")
mem_total=$(free -g | grep Mem | awk '{print $2}')
mem_used=$(free -g | grep Mem | awk '{print $3}')
disk_total=$(df -h | grep /dev/sda1 | awk '{print $2}')
disk_used=$(df -h | grep /dev/sda1 | awk '{print $3}')
url="http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg"
interval=60 # 执行间隔时间
timeout=5 # curl超时时间
while true
do
# 构造json数据
json_data="{\"ip\":\"$ip\",\"cpu\":\"$cpu\",\"mem_total\":\"$mem_total\",\"mem_used\":\"$mem_used\",\"disk_total\":\"$disk_total\",\"disk_used\":\"$disk_used\"}"
# 发送请求
result=$(curl -s -m $timeout -H "Content-Type:application/json" -d "$json_data" $url)
# 判断结果
if [ $? -ne 0 ]; then
# 记录错误日志
echo "[$(date)] curl error: $result" >> monitor_error.log
fi
# 等待
sleep $interval
done
```
这是一个示例脚本, 用于收集当前主机的IP、CPU使用率、内存总量和使用量、硬盘总量和使用量, 然后使用curl请求发送到指定的URL中, 并且每隔N秒钟(60s)执行一次,如果curl失败则记录到当前目录的monitor_error.log文件中.
请注意:
- 脚本中的IP地址、URL、间隔时间、超时时间等参数需要根据实际情况进行修改.
- 脚本中的硬盘检测是基于/dev/s
阅读全文