如何使用Linux脚本备份文件或目录?

Bash

1 前言

一个问题,一篇文章,一出故事。
笔者今天需要本文一些配置文件或者目录,于是整理此文。

2 最佳实践

2.1 创建备份脚本

mkdir ~/scripts/
vim ~/scripts/backupPostFixConf.sh

加入如下配置,

#!/bin/bash

backupDir="/data/backup"
backupFiles="/etc/postfix"
backupSubject="postfix"
removeTime="+14"
timeSet="`date +'%Y-%m-%d %H:%M:%S'`"
backupLog="/var/log/$backupSubject-backup.log"
backupSaveName="$backupSubject"'-backup'"-`date +'%Y%m%d%H%M%S' -d "$timeSet"`"'.tar.bz2'

if [ ! -d "$backupDir" ]; then
        echo "$timeSet Directory $backupDir does not exist!" | tee -a "$backupLog"
        exit 1
fi

if [ ! -d "`dirname $backupLog`" ]; then
        echo "$timeSet Directory `dirname $backupLog` does not exist!" | tee -a "$backupLog"
        exit 1
fi

echo "$timeSet Starting backup!" | tee -a "$backupLog"
for file in $backupFiles; do
        if [ ! -e "$file" ]; then
                continue
        fi
        tar -cvjf "$backupDir"'/'"$backupSaveName" "$file"
done
echo "$timeSet Backup completed successfully!" | tee -a "$backupLog"

#find "$backupDir" -mtime "$removeTime" -type f -name "$backupSubject"'-backup-*.tar.bz2' -exec ls -l {} \;
find "$backupDir" -mtime "$removeTime" -type f -name "$backupSubject"'-backup-*.tar.bz2' -exec rm -f {} \;

另外,根据脚本的需求,你需要使用如下命令安装软件包,

dnf install -y bzip2

2.2 创建脚本触发

crontab -e

加入如下配置,

0 3 */1 * * sh ~/scripts/backupPostFixConf.sh > /dev/null 2>&1
没有评论

发表回复

Bash
如何用Tigase监控Elasticsearch集群?

1 前言 一个问题,一篇文章,一出故事。 笔者生产中有一套Elasticsearch集群,笔者为了能 …

Bash
如何用Base Shell获取ES集群状态?

1 前言 一个问题,一篇文章,一出故事。 笔者想要通过Base Shell获取Elasticsear …

Bash
如何熟悉grep命令?

截取括弧“()”中的字符串, echo “This is a test (sample string …