如何使用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
如何使用expect自动输入密码?

1 前言 一个问题,一篇文章,一出故事。 笔者最近在一个脚本中使用“adcli passwd-use …

Bash
如何实现SFTP自动上传下载?

1 前言 一个问题,一篇文章,一出故事。 笔者最近需要实现sftp自动上传下载,于是整理此文。 以下 …

Bash
如何实现Base Shell根据关键字获取数组?

1 前言 一个问题,一篇文章,一出故事。 笔者最近写一个Shell发现同一个脚本需要引用两个以上AD …