我想备份我的整个 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