
압축된 tar 파일을 생성하고 백업을 위해 외부 서버에 업로드하는 간단한 bash 스크립트가 있습니다. 서버의 파일 외에도 mysql 데이터베이스의 일부 덤프도 포함하고 싶습니다.
디스크 공간 제약으로 인해 tar 아카이브를 생성하기 전에 더 이상 디스크의 파일에 대한 데이터베이스 덤프를 미리 생성할 수 없습니다. 내가 하고 싶은 것은 어떻게든 덤프를 tar로 직접 전송하는 것입니다.
나의 첫 번째 시도는 명명된 파이프를 생성하고 tar가 이를 읽도록 하는 것이었습니다. 덤프할 각 데이터베이스에 대해 mysqldump 프로세스에 대한 파이프를 생성합니다.
mkfifo $DB.sql
mysqldump --result-file=$DB.sql $DB &
echo $DB.sql >>$FILELIST
백업할 모든 파일 목록을 생성한 후:
tar c -P --files-from=$FILELIST | gzip | curl ...
나는 이것이 예상대로 작동하지 않는다는 것을 알았습니다. tar는 파이프의 내용을 읽는 대신 단순히 아카이브에 파이프 항목을 만듭니다.
동작을 변경하는 tar 스위치를 찾을 수 없습니다. tar가 파이프를 파일인 것처럼 읽도록 하는 방법이 있습니까? 아니면 이러한 유형의 상황을 처리할 수 있는 다른 유틸리티가 있습니까?
답변1
답변2
이것이 당신이 원하는 것인지 확실하지 않습니다. 파이프에서 읽는 것은 표준 입력에서 읽는 것을 의미합니다. 이는 표준 입력이 표시되는 tar xf -
(또는 압축된) 스트림을 사용 tar xzf -
하여 수행 됩니다. -
표준 출력에 쓰는 것과 유사합니다: ( tar cf -
또는 tar czf -
).