我找到了 tar 所有目录的示例,但它将其保留在同一目录中。
我想将 tar 保存在与常规文件结构不同的目录中。
到目前为止,我有类似的东西,但是basename
截断了我拥有的目录的名称。例如,某些目录是 www.example.com,最终显示为 www.tar.gz。
WEBROOT="var/www"
BAKPATH="/var/backups/"
for vhost in $WEBROOT; do
base=$(basename "$vhost")
tar -czf $BAKPATH/"`date +%Y-%m-%d`_${base}.tar.gz" "$vhost"
done
答案1
/*
之后就缺失了$WEBROOT
,可能还有cd
缺失:
for vhost in "$WEBROOT"/*/; do
base=$(basename "$vhost")
( cd "$WEBROOT" && tar -czf "$BAKPATH/$(date +%F)_$base.tar.gz" "$base" )
done
之后/
保证"$WEBROOT/*
我们只匹配目录。
这将在其中创建存档,$BAKPATH
并将其$base
作为顶级目录。
以下内容几乎完全相同:
find "$WEBROOT" -mindepth 1 -maxdepth 1 -type d \
-execdir tar -czf "$BAKPATH/$(date +%F)"_{}.tar.gz {} \;