linux两台服务器互相备份文件(sshpass + crontab)

news/2024/7/2 23:27:35

crontab

crontab是linux系统自带的定时调度软件,可用于设置周期性被执行的指令,一般用在每天的非高峰负荷时间段运行作业,可在无需人工干预的情况下运行作业。支持在一周或一月中的不同时段运行。
crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。服务器备份文件,我们要用crontab执行周期性的备份工作。

sshpass

sshpass 可在不直接输入密码的情况下,通过 SSH 连接到远程主机并执行命令。与手动输入凭据相比,sshpass 避免了手动输入密码,提高自动化流程的执行效率。两台服务器之间互相备份文件,要用到sshpass连接并传输文件。

步骤

1、创建sh文件,如下:

#!/bin/sh
source /etc/profile

#设置备份的源文件夹
backup_source=/home/admin/sh
#设置目的服务器地址 
remote_username=admin
remote_ip=10.10.11.60
remote_password=qwer123
remote_folder=/home/admin/sk
 
 
#创建备份的缓存文件夹backup_home
backup_home=/home/admin/backup_home
if [ ! -d ${backup_home} ];then
    mkdir ${backup_home}
    if [ $? -eq 0 ]; then
        echo "缓存文件夹创建成功"
    else
        echo "缓存文件夹创建失败"
        exit 1
    fi
else
    echo "缓存文件夹已经存在"
fi
 
#压缩文件到backup_home
date=$(date +%Y%m%d)
zip -q -r ${backup_home}/${date}.zip ${backup_source}
if [ $? -eq 0 ]; then
    echo "文件压缩成功"
else
    echo "文件压缩失败"
    exit 1
fi
 
#从本地复制到远程
sshpass -p ${remote_password} scp ${backup_home}/${date}.zip ${remote_username}@${remote_ip}:${remote_folder} 
if [ $? -eq 0 ]; then
    echo "从本地复制到远程成功"
else
    echo "从本地复制到远程失败"
    exit 1
fi
 
#删除backup_home下超过7天的zip文件
find ${backup_home} -mtime +7 -name "*.zip" -exec rm -rf {} \;

这是一个可执行的sh文件。注意:该文件创建后,需要用chmod对此文件授权为“可执行文件”,如下:

//test.sh 是文件名
chmod +x test.sh

2、安装sshpass

yum install sshpass

3、将sh命令文件加入crontab的运行周期

//添加周期性任务
crontab -e

//进入编辑状态
35 * * * * /home/admin/sd/test.sh >> /home/admin/backup_home/log.txt

//重启crontab
systemctl restart crond.service

4、对服务器互相传输文件动作进行授权。

 注意:这一步不能省略。否则,crontab执行任务时会因为未授权而传输文件失败。一定要先授权,再让crontab启动备份任务。

成果展示:

 


http://lihuaxi.xjx100.cn/news/1451684.html

相关文章

算法通关村第九关 | 二叉树查找和搜索树原理

1. 二分查找的扩展问题 1.1山脉数组的巅峰索引 LeetCode852:题目核心意思是在数组中,从0到i是递增的,从i1到数组最后是递减的,让你找到这个最高点。 三种情况: mid在上升阶段的时候,满足arr[mid] > a…

生态系统NPP及碳源、碳汇模拟教程

详情点击链接:生态系统NPP及碳源、碳汇模拟教程 第一:CASA模型 1.1 碳循环模型 1.2 CASA模型原理 1.3 CASA下载与安装 1.4 CASA注意事项 第二:CASA初步操作 2.1 ENVI界面 2.2 ENVI 数据及格式 2.3 基于ENVI的CASA模拟 2.4 CASA结果分…

渗透测试成功的8个关键

渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析&#x…

python自动化办公的一些小工具,函数组件

上一篇文章写了怎么自动化写一个月报,其中有很多很好用的函数组件,都被我封装为了函数,功能很好用。下面一一介绍: 1.添加汇总函数 输入一个pandas的数据框,就会返回一个加了汇总行的数据框。 def add_summary_row(d…

Flink的常用算子以及实例

1.map 特性&#xff1a;接收一个数据&#xff0c;经过处理之后&#xff0c;就返回一个数据 1.1. 源码分析 我们来看看map的源码 map需要接收一个MapFunction<T,R>的对象&#xff0c;其中泛型T表示传入的数据类型&#xff0c;R表示经过处理之后输出的数据类型我们继续往…

用AI攻克“智能文字识别创新赛题”,这场大学生竞赛掀起了什么风潮?

文章目录 一、前言1.1 大赛介绍1.2 项目背景 二、基于智能文字场景个人财务管理创新应用2.1 作品方向2.2 票据识别模型2.2.1 文本卷积神经网络TextCNN2.2.2 Bert 预训练微调2.2.3 模型对比2.2.4 效果展示 2.3 票据文字识别接口 三、未来展望 一、前言 1.1 大赛介绍 中国大学生…

leetcode-413. 等差数列划分(java)

等差数列划分 leetcode-413. 等差数列划分题目描述双指针 上期经典算法 leetcode-413. 等差数列划分 难度 - 中等 原题链接 - 等差数列划分 题目描述 如果一个数列 至少有三个元素 &#xff0c;并且任意两个相邻元素之差相同&#xff0c;则称该数列为等差数列。 例如&#xff0…

TiDB数据库的安装配置

一、 TiDB 软件和硬件环境建议配置 Linux 操作系统版本要求 Linux 操作系统 版本 Red Hat Enterprise Linux 7.3 及以上的 7.x 版本 CentOS 7.3 及以上的 7.x 版本 Oracle Enterprise Linux 7.3 及以上的 7.x 版本 Amazon Linux 2 Ubuntu LTS 16.04 及以上的版本 …