日期:2014-05-16  浏览次数:20596 次

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"