2014-10-04 2 views
0

방금 ​​발견 한 상자에 HDD 하드 드라이브가 5 % 남아 있고 s3에 보내려는 250GB의 MySQL bin 파일이 있습니다. 우리는 mysql에서 NoSQL로 이동했으며 현재 mysql을 사용하지 않습니다. 그러나 이전하기 전에 이전 데이터를 보존하고 싶습니다.업로드하고 업로드하는 방법 s3cmd로 즉석에서 s3에 업로드

문제는 내가 거기에 보내기 전에 루프에 파일을 tar 수 없습니다. 그래서 나는 압축 파일을 HDD에 저장하지 않기 위해 전송하기 전에 즉시 압축을 풀 수 있다고 생각했습니다.

for i in * ; do cat i | gzip -9c | s3cmd put - s3://mybudcket/mybackups/$i.gz; done 

이 명령을 테스트하려면 루프없이 실행하고 아무것도 보내지 않았지만 아무 것도 불평하지 않았습니다. 저것을 달성하기 위하여 어쨌든 있는가?

OS는 12.04 s3cmd 버전

1.0.0이 당신의 제안을 주셔서 감사하다 우분투입니다.

답변

1

stdin을 S3로 허용하는 기능이 2014 년 2 월 Master 분기에 추가되었으므로 버전이 최신 버전인지 확인하십시오. 버전 1.0.0은 2011 년 이전 버전이며, 현재 (현재이 글을 쓸 때) 1.5.2 버전입니다. 아마도 s3cmd 버전을 업데이트해야 할 가능성이 있습니다 에 따르면 do cat i에 변수로 표시하기 위해 $ do 기호가 누락되어있는 것을 제외하고 https://github.com/s3tools/s3cmd/issues/270에 따라이 외의 다른 s3cmd

이외의 버전을 업데이트해야합니다.

1

또는 https://github.com/minio/mc을 사용할 수 있습니다. Minio Client aka mc은 Golang으로 작성되었으며 Apache License Version 2로 배포됩니다.

사용자가 mc pipe 명령을 실행하여 Amazon S3에 직접 데이터를 스트리밍합니다. mc pipe은 병렬로 여러 대상에 파이프 할 수도 있습니다. 내부적으로 mc pig는 출력을 스트림하고 multipart upload를 병렬로 수행합니다.

$ mc pipe 
NAME: 
    mc pipe - Write contents of stdin to files. Pipe is the opposite of cat command. 

USAGE: 
    mc pipe TARGET [TARGET...] 

#!/bin/bash 

for i in *; do 
    mc cat $i | gzip -9c | mc pipe https://s3.amazonaws.com/mybudcket/mybackups/$i.gz 
done 

당신이 mc를 볼 수있는 경우도 :-) mc cat 명령을 구현합니다.

관련 문제