我想将一个mysql转储压缩到s3。
我试过了:
mysqldump -u root -ppassword -all-databases | gzip -9 | s3cmd put s3://bucket/sql/databases.sql.gz
但是然后我得到:
ERROR: Not enough paramters for command 'put'
我怎样才能做到这一点?
这是可能的s3cmd
1.5+( 链接 ):
$ mysqldump ... | s3cmd put - s3://bucket/file-name.sql
您错过了要启动备份的实际文件。
s3cmd put /backup_dir/somefile.sql.gz s3://bucket/sql/
s3cmd需要两个基本参数,文件和要备份的存储桶。
其次,我不能赞扬以下内容,但它基本上是用中间脚本来做你想要的。 基本上,使用以下命令创build一个bak.sh文件,然后该shell脚本将通过bash运行。 (信用: http : //www.wong101.com/tech-cloud/configure-s3cmd-cron-automated-mysql-backup )
S3BUCKET="<bucketname>" # Array of Databases DBS=("<db1>" "<db2>" "<db3>" "<db4>") for i in "${DBS[@]}" do DBNAME=$i FILE=$DBNAME-`date "+%Y%m%d-%H%M"`.sql.gz mysqldump $DBNAME -u[uname] -p[password] | gzip -9> /home/$FILE #location of s3cmd may vary, modify if needed /usr/bin/s3cmd --config /root/.s3cfg put /home/$FILE s3://$S3BUCKET/DBBackup-$DBNAME/ >> /var/log/mysqlback.log sleep 5 rm /home/$FILE done
你可以尝试使用-
指示s3cmd它应该读取源参数的标准input,它可能工作。 如果没有,你可以做一个中间步骤
mysqldump -u root -ppassword -all-databases | gzip -9 >tmp.file && s3cmd put tmp.file s3://bucket/sql/databases.sql.gz ... && rm tmp.file
这将压缩输出到tmp.file,如果成功( &&
)它将把文件放到s3然后如果这是成功的,它会删除临时文件。