使用tar

时间:2019-02-14 14:27:56

标签: unix tar

我有一个非常简单的bash脚本,它每天晚上都通过crontab运行。

使用tar归档我的网站时,我遇到的问题是忽略目录之一。它似乎仍然包含它。

有什么想法吗?

#!/bin/bash

NOW=$(date +"%Y-%m-%d-%H%M")

DB_USER=""
DB_PASS=""
DB_NAME=""
DB_HOST=""

TREE_FILE="$NOW.tar.gz"
DB_FILE="$DB_NAME.$NOW.sql"

BACKUP_DIR="/var/www/html/site/backups/"
WWW_DIR="/var/www/html/site/"

mkdir -p $BACKUP_DIR
tar -czvf $BACKUP_DIR/$TREE_FILE --exclude=/var/www/html/site/backups/ $WWW_DIR

mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/$DB_FILE

find $BACKUP_DIR -type f -mtime +7 -delete

1 个答案:

答案 0 :(得分:1)

我相信tar会删除目录路径中的所有斜杠,因此我认为您只是想将斜杠留在模式之外:

tar -czvf $BACKUP_DIR/$TREE_FILE --exclude=/var/www/html/site/backups $WWW_DIR

这将排除目录backups及其下的所有内容,但不排除名为backupsthing的文件。

您还可以执行以下操作:

tar -czvf $BACKUP_DIR/$TREE_FILE --exclude="/var/www/html/site/backups/*" $WWW_DIR

这将包括backups目录本身,但目录下没有任何内容。 (即,您在tar中有一个空目录。)