如何使用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
如何熟悉Base Shell的变量的间接引用?

1 前言 一个问题,一篇文章,一出故事。 笔者希望以一个变量名称去引用另一个变量,于是整理此文。 2 …

Bash
如何实现文件夹路径转纯数字符串?

1 前言 一个问题,一篇文章,一出故事。 由于由于需要设置某目录的配额,配额要求为每个目录指定一个项 …

Bash
如何统计Linux打开文件前10进程?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台服务最近压力比较大,打开的文件数量不断地往 …