如何将每个目录打包为单独的文件并将 tar 保存在另一个目录中?

如何将每个目录打包为单独的文件并将 tar 保存在另一个目录中?

我找到了 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 {} \;

相关内容