linux停备份文件的shell脚本

linux下备份文件的shell脚本

递归备份指定目录下的文件,已备份过且未更新则不备份。

使用:

          将以下脚本保存到一个脚本文件中,并加上可执行权限。然后执行此脚本文件,第一个参数为需要备份的文件,第二个参数为备份的目的地。

如保存到backupScript.sh中,执行./backupScript.sh  需要备份的文件  备份的目的地

 

#!/bin/bash
backUp(){

local sourceDir=$1     #需要备份的文件/目录
local destDir=$2         #备份目的地

if [ -d "$sourceDir" ] #备份目录
then   
    #如果目录尚未备份,则创建此目录
    if [ ! -d "$destDir/$sourceDir" ]
    then
        echo -e "创建目录\t$sourceDir"
        mkdir  -p "$destDir/$sourceDir"
    fi
    #对目录中对每一个文件,递归调用此函数进行备份
    for var in $(ls "$sourceDir")
    do               
        backUp "$sourceDir/$var" "$destDir"
    done
else     #备份文件
    #如果文件在尚未备份,则直接复制
    if [ ! -f "$destDir/$sourceDir" ]
    then
        echo -e "备份文件\t$sourceDir"
        cp "$sourceDir" "$destDir/$sourceDir"
    else
        #如果文件已存在,则比较两个文件对最后修改时间,如果文件已修改,则更新文件
        lastModifi_backup=$(date -r "$destDir/$sourceDir" +%s)
        lastModifi_current=$(date -r "$sourceDir" +%s)
        if [ "$lastModifi_current" -gt "$lastModifi_backup" ]
        then
            echo -e "更新文件\t$sourceDir"           
            cp "$sourceDir" "$destDir/$sourceDir"           
        fi
    fi
fi
}
backUp "$1" "$2"