在实际应用中,tar命令经常用来打包备份,使用的方法是编写一个自动备份脚本,定期对指定的文件或目录进行压缩、打包备份,这是一个运维最基础的工作。要编写这个脚本,核心就是通过tar命令对需要备份的文件进行打包和压缩。
#!/bin/bash
dateTime=$(date +%Y_%m_%d)
days=7
bakUser=user1
#备份文件在本地主机的路径
backupDir=/data/backupData
#备份产生的文件名称,以当前时间命名
bakdata=${bakUser}_${dateTime}.tar.gz
bakLog=${bakUser}_${dataTime}.log
#本地需要备份的文件
bakSrcDir=/db/mysql/data
#远程备份机备份路径
remotePath=/backupData/dbdata
remoteIP="172.16.1.188"
cd ${backupDir}
mkdir -p ${bakUser}
cd ${bakUser}
#备份开始,首先向备份日志文件写开始时间
echo "backup start at ${dateTime}" > ${bakLog}
echo "---------------------------" >> ${bakLog}
#对指定的目录以及产生的日志文件进行备份
tar -cvzf ${bakData} ${backSrcDir} ${bakLog}
#删除备份过程产生的日志文件
find ${backupDir}/${bakUser} -type f -name "*.log" -exec rm {} \;
#删除7天前的备份
find ${backupDir}/${bakUser} -type -f -name "*.tar.gz" -mtime +${days} -exec rm -rf {} \;
#通过rsync传输本地备份到远程主机
rsync -avzPL ${backupDir}/${bakUser}/${bakData} ${remoteIP}:${remotePath}
Tips
传输到远程主机是通过rsync命令来实现的,因为rsync用来是传输文件更加精准,它可以校验文件的完整性,但前提是要打通备份机与远程备份机的无密码登录。