각 디렉토리를 별도의 파일로 패키지하고 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 {} \;

관련 정보