как передать дамп mysql по каналу к s3cmd

Внутренний sftp сервер работает как корень и поэтому берет корни umask., можно зафиксировать это путем принуждения umask, например, в /etc/ssh/sshd_config изменение

Subsystem sftp /usr/lib/openssh/sftp-server

кому:

Subsystem sftp /bin/sh -c 'umask 0002; /usr/libexec/openssh/sftp-server'

или безотносительно umask Вы хочу.

6
задан 17 June 2014 в 18:56
5 ответов

Вам не хватает фактического файла, который вы хотите создать резервную копию для запуска.

s3cmd put /backup_dir/somefile.sql.gz s3://bucket/sql/

s3cmd принимает два основных аргумента: файл и корзину для резервного копирования.

Во-вторых, я могу ' Я полагаюсь на следующее, но в основном он делает то, что вы хотите, с помощью промежуточного сценария. По сути, создайте файл bak.sh со следующим, и затем этот сценарий оболочки будет запускаться через 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
1
ответ дан 3 December 2019 в 00:00

Вы могли попробуйте использовать - , чтобы указать s3cmd, что он должен читать stdin для параметра источника, это может сработать. В противном случае вы могли бы сделать это с помощью промежуточного шага

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 и в случае успеха ( &&

0
ответ дан 3 December 2019 в 00:00

Это возможно с s3cmd 1.5+ ([ ссылка ):
$ mysqldump ... | s3cmd put - s3: //bucket/file-name.sql

18
ответ дан 3 December 2019 в 00:00

Создать mysql.sh для хранилища mysqldump прямо в s3 через конвейер Никакие локальные файлы не будут сохраняться.

#!/bin/bash

#/home/ec2-user/s3/mysql.sh

#logging
    LOG_ROOT="/var/www/html/laravel/storage/logs/laravel-$(date +%Y-%m-%d).log"

# Basic variables

# Database credentials
USER=root
PASSWORD=password
HOST=localhost
DB_NAME=dbname

#Backup_Directory_Locations

S3BUCKET=s3://bucket/database/$(date +%a).sql.gz

# Timestamp (sortable AND readable)
TSTAMP=$(date +"%Y-%m-%d %H:%M:%S")

#Dump of Mysql Database into S3\
echo "[$TSTAMP] MYSQL_Dump.WARNING: MySQL Dump for DB_NAME started from cron s3/mysql.sh" >> "$LOG_ROOT"
echo "Stack trace:" >> "$LOG_ROOT"
echo "#wil be stored as s3://bucket/database/$(date +%a).sql.gz" >> "$LOG_ROOT"

mysqldump --host=$HOST --user=$USER --password=$PASSWORD  $DB_NAME  --routines  --single-transaction | gzip -9 | aws s3 cp - $S3BUCKET

$TSTAMPEND=$(date +"%Y-%m-%d %H:%M:%S")
echo "[$TSTAMPEND] MYSQL_Dump.INFO: MySQL Dump finished." >> "$LOG_ROOT"
echo "Stack trace:" >> "$LOG_ROOT"
echo "#Backup stored at s3://bucket/database/$(date +%a).sql.gz" >> "$LOG_ROOT"

Создать задание Cron для ежедневного резервного копирования

#crontab -e
0 0 * * *  bash /home/ec2-user/s3/mysql.sh to  >/dev/null 2>&1
#midnight 12 daily
0
ответ дан 3 December 2019 в 00:00

Теперь это кажется возможным. С s3cmd v1.6.1:

curl -v "http://remote-server/file.mp4" | 
s3cmd [-c .s3cfg-aws] put - [-P] s3://my-bucket/[folder/]filename.mp4
1
ответ дан 2 January 2021 в 16:46

Теги

Похожие вопросы