我使用以下简单的脚本脚本通过tar备份我的所有网站

TIME=`date +%b-%d-%y`
FILENAME=backup-$TIME.tar.gz

#Parent backup directory
backup_parent_dir="/backup/httpdocs"

#Create backup directory and set permissions
backup_date=`date +%Y_%m_%d_%H_%M`
backup_dir="${backup_parent_dir}/${backup_date}"
echo "Backup directory: ${backup_dir}"
mkdir -p "${backup_dir}"
chmod 755 "${backup_dir}"

SRCDIR=/var/www/sites           #Location of Important Data Directory (Source of backup).

tar -cpzf $backup_dir/$FILENAME $SRCDIR

现在,这很好,但我需要两件事,如果我可以通过同样的脚本
我是否可以排除/var/www/sites目录中的某个文件夹,例如不想备份/var/www/sites/abc.com/logs文件夹。我可以在这个脚本中定义它和其他子目录吗?
该脚本将指定的文件夹中的所有TAR格式的所有站点按CcRoWord运行,在夜间运行,对于旧的TARBARE(7天以上),我必须手动删除它们,因此通过相同的脚本有可能,所以在运行时,检查是否存在任何备份超过7天,并自动删除它。
编辑:
谢谢大家,这是我现在使用的备份,不包括日志文件,删除任何超过7天的内容
#!/bin/bash
#START
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.

# Parent backup directory
backup_parent_dir="/backup/httpdocs"

# Create backup directory and set permissions
backup_date=`date +%Y_%m_%d_%H_%M`
backup_dir="${backup_parent_dir}/${backup_date}"
echo "Backup directory: ${backup_dir}"
mkdir -p "${backup_dir}"
chmod 755 "${backup_dir}"

SRCDIR=/var/www/vhosts           # Location of Important Data Directory (Source of backup).

tar -cpzf $backup_dir/$FILENAME $SRCDIR --exclude=$SRCDIR/*/logs

find ${backup_parent_dir} -name '*' -type d -mtime +2 -exec rm -rfv "{}" \;

#END

最佳答案

从tar中排除:

tar -cpzf $backup_dir/$FILENAME --exclude=/var/www/sites/abc.com/logs $SRCDIR

查找和删除旧备份:
find ${backup_parent_dir} -type f -name 'backup-*.tar.gz' -mtime +7 -delete

find的过滤器是保守的:选择与backup-*.tar.gz匹配的名称可能会使-type f选项(仅限文件)无效。我添加它只是为了防止你也有这样的名字目录。-mtime +7选项将由您选中,因为超过7天的时间不够准确。根据您的想法,它可能是+6+7+8。请查看find手册页并自行决定。请注意,选择要删除的备份不是基于其名称,而是基于其上次修改的日期。如果在创建后对其进行修改,则可能不是所需的。告诉我们。

关于linux - 排除目录并删除旧备份,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32440137/

10-14 15:59
查看更多