天津网站建设方案,wordpress特效插件,如何做网络免费推广方案,上海网站制作策目录 说明准备实现结果步骤生成RSA公钥和私钥查看密钥生成结果将公钥传输到目标服务器 额外内容自动备份文件脚本定时删除备份文件 说明
日常工作中常常会使用到ssh 的scp命令进行文件传输。有时候甚至使用自定义的脚本配合定时任务来对文件进行异地备份#xff0c;那么此时就… 目录 说明准备实现结果步骤生成RSA公钥和私钥查看密钥生成结果将公钥传输到目标服务器 额外内容自动备份文件脚本定时删除备份文件 说明
日常工作中常常会使用到ssh 的scp命令进行文件传输。有时候甚至使用自定义的脚本配合定时任务来对文件进行异地备份那么此时就需要免密传输来使脚本自己运行并备份。
准备
序号服务器ip说明1192.168.0.100此服务器为源地址2192.168.0.200此服务器为目标地址
实现结果
使用crontab定时执行自定义的脚本将服务器192.168.0.100的文件免密传输到192.168.0.200指定位置中。
步骤
生成RSA公钥和私钥
使用root登录192.168.0.100 后。执行以下命令生成rsa公钥和私钥.(三次回车)
ssh-keygen -t rsa查看密钥生成结果
密钥生成完成后回在**/root/.ssh**下得到密钥相关的文件可以使用以下命令进行查看
ls -l /root/.ssh如下图红色为生成的公钥(id_rsa.pub)和私钥(id_rsa)文件
将公钥传输到目标服务器
使用scp将公钥文件id_rsa.pub传输到 192.168.0.200 目标服务器的 /root/.ssh目录下 。并重命名为authorized_keys 注意scp登录的目标服务器的用户也是root。
scp id_rsa.pub root192.168.0.200:/root/.ssh/authorized_keys到此已经可以在 192.168.0.100 中使用scp 命令无密传输文件到 192.168.0.200 中。
额外内容
以下脚本可以配合crontab来设置定时任务执行。
crontab -e推荐使用 crontab生成网站 来配置时间
# 配置定时任务指定时间执行指定脚本
* * * * * sh 脚本路径自动备份文件脚本
#!/bin/bash
echo 自动异地备份开始# 本地服务器存放文件地址即192.168.0.100文件存放地址
backUpPath/extend1/backup# 备份到的目标服务器
tagServerIp192.168.0.200# 192.168.0.200存放备份文件地址
bakUpTo200SavePath/dBackUpecho 将逻辑备份文件和日志异地备份到${tagServerIp}的目录${bakUpTo200SavePath}上cd ${backUpPath}dateToday$(date %Y-%m-%d)echo 今日时间${dateToday}# 循环指定传输的文件
# dbfull_${dateToday}.db 表示文件名称为 dbfull_年-月-日.db 格式的文件
for item in $(find ${backUpPath} -maxdepth 1 -type f -name dbfull_${dateToday}.db );doecho 传输文件${item}scp ${item} root${tagServerIp}:${bakUpTo200SavePath}
done 定时删除备份文件
#!/bin/bash# 删除指定天数前的备份数据
delDayNumber14backUpSavePath/dBackUp
echo备份存放路径${backUpSavePath}# 当前时间
current_date$(date %Y-%m-%d)# 指定天数的日期
target_date$(date -d $current_date -${delDayNumber} day %Y-%m-%d)echo当前时间为${current_date},删除${delDayNumber}天前的备份删除日期为${target_date}前的备份# 目标日期时间戳
target_date_timeStamp$(date -d $target_date %s)# 查找删除的文件
# dbfull_${dateToday}.db 表示文件名称为 dbfull_年-月-日.db 格式的文件 和 dbfull_年-月-日.log 格式的文件
for i in $(find ${backUpSavePath} -maxdepth 1 -type f \( -name dbfull_*.db -o -name dbfull_*.log \) ) ;do# echo ${i}if [[ $i ~ ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ]]; then# 匹配到文件中的日期year${BASH_REMATCH[1]}month${BASH_REMATCH[2]}day${BASH_REMATCH[3]}file_date${year}-${month}-${day}# 文件日期时间戳file_date_timestamp$(date -d ${file_date} %s)if [ ${target_date_timeStamp} -gt ${file_date_timestamp} ] ;then#echo ${target_date}大于${file_date} # 在删除的范围内echo 删除${i}rm ${i}continueelif [ ${target_date_timeStamp} -eq ${file_date_timestamp} ];then#echo ${target_date}}等于${file_date}# 在删除的范围内echo 删除${i}rm ${i}continueelse#echo ${target_date}小于${file_date}# 不在删除的范围内continuefifi
done