![while 루프의 출력을 tar로 병합](https://linux55.com/image/61500/while%20%EB%A3%A8%ED%94%84%EC%9D%98%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20tar%EB%A1%9C%20%EB%B3%91%ED%95%A9.png)
mysqldumps 모든 데이터베이스에 대한 스크립트를 생성하고, 각 데이터베이스에 대해 별도의 .sql 파일을 생성하고, 출력을 backup-DATE.tar.gz에 병합하려고 합니다.
.sql 백업을 생성할 수 있었지만 제한된 지식으로 인해 극복할 수 없는 마지막 장애물은 모든 .sql 파일을 backup-DATE.tar.gz에 병합하는 방법입니다.
이것이 내가 지금까지 가지고 있는 것입니다:
mysql -N -u user -p'password' -e 'show databases' | while read dbname; do mysqldump --add-drop-table -u user -p'password' "$dbname" > /backuplocation/"$dbname".sql; done
그러면 모든 데이터베이스가 다음과 같은 백업 위치로 개별적으로 내보내집니다.
/backuplocation/
/db1.sql
/db2.sql
/db3.sql
이 전략을 사용하여 이 출력을 backup-DATE.tar.gz에 병합할 수 있습니까?
내 목표를 더 잘 설명하기 위해 편집되었습니다.
내 목표는 이 스크립트를 실행하여 다음과 같은 결과를 얻는 것입니다.
/backuplocation/
/backup-DATE.tar.gz/
/db1.sql
/db2.sql
/db3.sql
대신에:
/backuplocation/
/db1.sql
/db2.sql
/db3.sql
답변1
일반 "backuplocation" 대신 backup$(date)를 추가하도록 스크립트를 수정할 수 있습니다(그리고 먼저 backuplocation이라는 폴더를 한 번만 생성합니다).
tar -czf backuplocation/backup-$(date).tar.gz backup$(date)
mv backup-$(date).tar.gz backuplocation/
rm -rf backup$(date)