在我的备份脚本中使用 tar 时,应该如何“排除”特定目录

在我的备份脚本中使用 tar 时,应该如何“排除”特定目录

我想备份我的整个 Linux 服务器,但是我应该在哪里使用 --exclude=proc --exclude=sys --exclude=dev/pts --exclude=/var/backups 。请帮忙!!!

这是我的代码。其中可能也有一些错误。欢迎反馈......

#!bin/bash
#Purpose = Backup of var directory

TIME=`date +"%b-%d-%y"`  # This Command will add date in Backup File Name.
FILENAME="backup-$TIME.tar.gz"  # Here i define Backup file name format.
SRCDIR="/ "    # Location of Important Data Directory (Source of backup).
DESDIR="/var/backups/fullbackup"    # Destination of backup file.
LOGSYS="/var/log/fullbackup"   #Log files of the backup.

echo "Starting backup of $SRCDIR to $DESDIR on $TIME" >> ${LOGSYS}
tar -cpzf $DESDIR/$FILENAME $SRCDIR
echo "Ending backup of $SRCDIR on $TIME" >> ${LOGSYS}

#END

答案1

您可以将所有要排除的目录列出到一个文本文件中,如下所示:

/var/backups
/proc
/sys
/dev
/tmp

我们将此文件命名为/etc/backup-excl.lst

然后您可以tar按照以下方式调用该命令:

tar ScpfzX /etc/backup-excl.lst $DESTDIR/$FILENAME $SRCDIR

X 参数 flas 用于告知随后将出现一个包含要排除的目录的文件。

S参数用于智能处理Linux稀疏文件。稀疏文件是包含空白空间的文件,其中的磁盘空间是预先分配的,但不一定使用。智能处理这些文件意味着只备份实际内容,而不是空白空间。

答案2

要添加排除选项,只需将其附加到后面:

tar -cpzf $DESDIR/$FILENAME $SRCDIR --exclude=proc --exclude=sys --exclude=dev/pts --exclude=/var/backups

更好的方法是添加带有排除选项的变量,例如:

EXCLUDE="--exclude=proc --exclude=sys --exclude=dev/pts --exclude=/var/backups"

此后你的 tar 命令应如下所示:

tar -cpzf $DESDIR/$FILENAME $SRCDIR $EXCLUDE

相关内容