以下脚本备份目录/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/