前言
注意空格编码问题和多个空格问题,会导致此命令执行不成功。
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}
定时任务
赖得写了,上边这个脚本执行没有问题。直接调用即可