Linuk下rsync+Crontab实现文档同步脚本

rsync+Crontab实现文档同步脚本


前言

注意空格编码问题和多个空格问题,会导致此命令执行不成功。
1.手动测试:rsync -avz --delete root@10.0.12.13:/home/ /data/upload/ --log-file=/data/log/aa.log
2.可结合linuk定时任务执行此脚本,进行文件增量备份,防止文件丢失灾难
3.此文件会详细记录同步的文件日志。


提示:以下是本篇文章正文内容,下面案例可供参考

sh脚本

#!/bin/bash
export PATH=${PATH}

###被拷贝的目录( 注意:路径必须以"/"结束) ###
SrcFolderPath=''
## 存放备份文件(夹)的目录( 注意:路径必须以"/"结束)   ###
DstFolderPath=''
## SSH登录的账号 ##
RemoteLoginUserName=''
##  远程SSH 服务器IP 地址 ##
RemoteHostIP=''

## 存放日志目录
#PWD=$(dirname $0) 当前目录
PWD='/home/data'
CurrentTimeStamp=`date +'%Y-%m-%d_%H_%M_%S'`
PidFile="${PWD}/pid.log"
LogFolder="${PWD}/logs/"
TmpLogFile="${LogFolder}/${CurrentTimeStamp}.log"
CurrentPID=$$

##    检测本地是否安装了rsync  ##
which rsync
if [ "$?" -ne '0' ]
then
    echo "本地服务器未安装 rsync工具,无法进行同步,程序退出"
	exit 1
fi


## 检测日志目录是否存在  ###
if [ ! -d ${LogFolder} ]
then
   mkdir -p ${LogFolder}
fi


if [ ! -f "${PidFile}" ]
then
    touch ${PidFile}
fi
    
## 检测是否存在尚未结束的同步任务  ###
PreviousPID=$(cat ${PidFile}|awk '{$1=$1};1')
if [ -n "${PreviousPID}" ]
then
   TmpCmd=$(cat /proc/${PreviousPID}/task/${PreviousPID}/cmdline)
   if [[ "${TmpCmd}" =~ .sync_remote_folder. ]]
   then
       echo "检测到PID:${PreviousPID},当前尚有未同步完成的任务,程序退出!"
       echo "检测到PID:${PreviousPID},当前尚有未同步完成的任务,程序退出!">${TmpLogFile}
       exit 1
   fi
fi

`echo ${CurrentPID} >${PidFile}`

RemoteHostIP=$(echo ${RemoteHostIP}|awk '{$1=$1};1')
rsync -avh --delete  ${RemoteLoginUserName}@${RemoteHostIP}:${SrcFolderPath} ${DstFolderPath} --log-file=${TmpLogFile}

echo '文件同步任务完成'
cat /dev/null >${PidFile}

定时任务

赖得写了,上边这个脚本执行没有问题。直接调用即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值