gpt4 book ai didi

linux - 备份 bash 脚本和 tar 排除日志和目录

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:50 24 4
gpt4 key购买 nike

以下脚本备份目录/var/www/websites 中的所有网站,并为/var/backup 中的每个单独网站创建 .tar.gz 并且工作正常

WEBROOT="/var/www/websites"
BAKPATH="/var/backup"

for vhost in "$WEBROOT"/*; do
test -d "$vhost" || continue
base=$(basename "$vhost")
( cd "$WEBROOT" && tar -cpzf "$BAKPATH/$(date +%F)_$base.tar.gz" "$base" )
done

但是,我需要从备份中排除日志文件夹和一个网站,就像我们通常用 tar 排除一样

--exclude=$BAKPATH/*/logs or --exclude=$BAKPATH/website2.com

我不确定把它放在哪里?我试过跟随但它不起作用

WEBROOT="/var/www/websites"
BAKPATH="/var/backup"

for vhost in "$WEBROOT"/*; do
test -d "$vhost" || continue
base=$(basename "$vhost")
( cd "$WEBROOT" && tar -cpzf "$BAKPATH/$(date +%F)_$base.tar.gz --exclude=$BAKPATH/*/logs --exclude=$BAKPATH/website2.com" "$base")
done

我应该放在哪里

--exclude=$BAKPATH/*/logs --exclude=$BAKPATH/website2.com

所以影响了?

最佳答案

$BAKPATH 是应该创建备份过程的目标(存档,*.tgz 文件)的地方。如果您想从中排除某些内容,您必须在中指定路径:

tar -cpz --exclude "$base/logs" \
-f "$BAKPATH/$(date +%F)_$base.tar.gz" "$base"

这将排除所有与 glob 模式匹配的文件 $base/logs(以及下面的所有内容)。

根据你的问题,我假设你想排除 e。 G。名为 /var/www/websites/cardboardwebshop/logs/access.log 的文件。如果这不正确,请评论,也许我们可以弄清楚您到底需要写什么来排除您想要排除的内容。

关于linux - 备份 bash 脚本和 tar 排除日志和目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51363382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com