各ディレクトリを別々のファイルにパッケージ化し、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 {} \;

おすすめ記事