пятница, 15 февраля 2019 г.

Выгрузка файла на FTP-сервер с помощью curl

Выгрузка файла на FTP-сервер с помощью curl


Подготовительная работа описана здесь

$ nano backup_ftp.sh 

#!/bin/sh
set -e
PASSWORD='MPKaP6PsxJLzs1VzNdBz'
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DIR_TMP='/backup'
DIR_BACKUP='/home/user/backup'
DIR_YANDEX='/home/user/backup/yandex'
#echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log
# Записываем информацию в лог с секундами
echo "$DATA Start backup"
echo "$DATA Start backup" >> /home/user/backup/backup.log

sudo /bin/su postgres -c "rm -rf $DIR_TMP/*" \
     && sudo /bin/su postgres -c "/usr/bin/pg_basebackup -D $DIR_TMP -Ft -z -Xf -P" \
     && sudo mv $DIR_TMP/base.tar.gz $DIR_BACKUP/base-$DATA.tar.gz \
     && sudo /bin/su user -c "openssl enc -aes-256-cbc -salt -in $DIR_BACKUP/base-$DATA.tar.gz -out $DIR_YANDEX/base-$DATA.tar.gz.enc -k $PASSWORD" \
     && curl --upload-file $DIR_YANDEX/base-$DATA.tar.gz.enc ftp://test:test@192.168.0.5 \
     && sudo /bin/su user -c "rm $DIR_YANDEX/base-$DATA.tar.gz.enc"

#&& sudo /bin/su user -c "yandex-disk start"
#&& sudo /bin/su postgres -c "/usr/bin/vacuumdb -zfa" >> /home/user/backup/backup.log

#echo $?

DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
     echo "$DATA Ошибка завершения для backup"
     echo "$DATA Ошибка завершения для backup" >> /home/user/backup/backup.log
else
     echo "$DATA Успешное завершение backup"
     echo "$DATA Успешное завершение backup" >> /home/user/backup/backup.log
fi
echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log

Сохранить.

Запуск:
$ sudo sh  backup_ftp.sh

Другой вариант:

Предполагаем что на ftp установленом в локальной сети пользователя нет достаточно места.
Создаем 5 копий по числу дней недели которые будут перезаписываться. 

$ nano backup_ftp.sh


#!/bin/sh
set -e
PASSWORD='MPKaP6PsxJLzs1VzNdBz'
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DATA_FTP=`date +"%u"`
DIR_TMP='/backup'
DIR_BACKUP='/home/user/backup'
DIR_YANDEX='/home/user/backup/yandex'
#echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log
# Записываем информацию в лог с секундами
echo "$DATA Start backup"
echo "$DATA Start backup" >> /home/user/backup/backup.log

sudo /bin/su postgres -c "rm -rf $DIR_TMP/*" \
     && sudo /bin/su postgres -c "/usr/bin/pg_basebackup -D $DIR_TMP -Ft -z -Xf -P" \
     && sudo mv $DIR_TMP/base.tar.gz $DIR_BACKUP/base-$DATA.tar.gz \
     && sudo /bin/su user -c "openssl enc -aes-256-cbc -salt -in $DIR_BACKUP/base-$DATA.tar.gz -out $DIR_YANDEX/base-$DATA_FTP.tar.gz.enc -k $PASSWORD" \
     && curl --upload-file $DIR_YANDEX/base-$DATA_FTP.tar.gz.enc ftp://test:test@192.168.1.246 \
     && sudo /bin/su user -c "rm $DIR_YANDEX/base-$DATA_FTP.tar.gz.enc"

#&& sudo /bin/su user -c "yandex-disk start"
#&& sudo /bin/su postgres -c "/usr/bin/vacuumdb -zfa" >> /home/user/backup/backup.log

#echo $?

DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
     echo "$DATA Ошибка завершения для backup"
     echo "$DATA Ошибка завершения для backup" >> /home/user/backup/backup.log
else
     echo "$DATA Успешное завершение backup"
     echo "$DATA Успешное завершение backup" >> /home/user/backup/backup.log
fi
echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log
 
Запуск:
$ sudo sh  backup_ftp.sh

Шифрование файлов backup с использованием gpg и открытого публичного ключа
Вариант с gpg:
Просомтр ключей
$ gpg --list-keys
gpg: создан каталог `/home/user/.gnupg'
gpg: создан новый файл настроек `/home/user/.gnupg/gpg.conf'
gpg: ВНИМАНИЕ: параметры в `/home/user/.gnupg/gpg.conf' при этом запуске еще не действуют
gpg: создана таблица ключей `/home/user/.gnupg/pubring.gpg'
gpg: /home/user/.gnupg/trustdb.gpg: создана таблица доверия

Импорт открытого ключа
$ gpg --import pubkey.txt
gpg: создана таблица ключей `/home/user/.gnupg/secring.gpg'
gpg: ключ 9BD0BCD3: импортирован открытый ключ "backup <mail@backup.com>"
gpg: Всего обработано: 1
gpg:               импортировано: 1  (RSA: 1)

Импорт закрытого ключа(нужен на момент восстановления)
user@u1604:~$ gpg --allow-secret-key-import --import privkey.txt
gpg: ключ 9BD0BCD3: импортирован закрытый ключ
gpg: ключ 9BD0BCD3: "backup <mail@backup.com>" не изменен
gpg: Всего обработано: 1
gpg:              неизмененных: 1
gpg:       считано закрытых ключей: 1
gpg:   импортировано закрытых ключей: 1

$ gpg --edit-key mail@backup.com
gpg (GnuPG) 1.4.20; Copyright (C) 2015 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Закрытый ключ доступен.

pub  4096R/9BD0BCD3  создан: 2019-02-17  годен до: никогда       применимость: SC
                     доверие: неизвестной действительность: неизвестной
sub  4096R/4452E03E  создан: 2019-02-17  годен до: никогда       применимость: E
[неизвестно] (1). backup <mail@backup.com>

gpg> trust Enter;
pub  4096R/9BD0BCD3  создан: 2019-02-17  годен до: никогда       применимость: SC
                     доверие: неизвестной действительность: неизвестной
sub  4096R/4452E03E  создан: 2019-02-17  годен до: никогда       применимость: E
[неизвестно] (1). backup <mail@backup.com>

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

  1 = Не знаю или не буду отвечать
  2 = НЕ доверяю
  3 = Доверяю ограниченно
  4 = Полностью доверяю
  5 = Абсолютно доверяю
  m = вернуться в главное меню

Ваше решение? 5
Вы действительно хотите сделать этот ключ абсолютно доверенным? (y/N) y

pub  4096R/9BD0BCD3  создан: 2019-02-17  годен до: никогда       применимость: SC
                     доверие: абсолютное действительность: неизвестной
sub  4096R/4452E03E  создан: 2019-02-17  годен до: никогда       применимость: E
[неизвестно] (1). backup <mail@backup.com>
Учтите, что показанная действительность ключа может быть неверной,
пока Вы не перезапустите программу.


gpg> q

$ nano backup_ftp.sh

#!/bin/sh
set -e
PASSWORD='MPKaP6PsxJLzs1VzNdBz'
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DATA_FTP=`date +"%u"`
DIR_TMP='/backup'
DIR_BACKUP='/home/user/backup'
DIR_YANDEX='/home/user/backup/yandex'
#echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log
# Записываем информацию в лог с секундами
echo "$DATA Start backup"
echo "$DATA Start backup" >> /home/user/backup/backup.log

sudo /bin/su postgres -c "rm -rf $DIR_TMP/*" \
     && sudo /bin/su postgres -c "/usr/bin/pg_basebackup -D $DIR_TMP -Ft -z -Xf -P" \
     && sudo mv $DIR_TMP/base.tar.gz $DIR_BACKUP/base-$DATA.tar.gz \
     && sudo /bin/su user -c "gpg -e -r mail@backup.com --cipher-algo  AES256 -o $DIR_YANDEX/base-$DATA_FTP.tar.gz.gpg $DIR_BACKUP/base-$DATA.tar.gz" \
     && curl --upload-file $DIR_YANDEX/base-$DATA_FTP.tar.gz.gpg ftp://test:test@192.168.1.246 \     && sudo /bin/su user -c "rm $DIR_YANDEX/base-$DATA_FTP.tar.gz.gpg"

#&& sudo /bin/su user -c "yandex-disk start"
#&& sudo /bin/su postgres -c "/usr/bin/vacuumdb -zfa" >> /home/user/backup/backup.log
#&& sudo /bin/su user -c "openssl enc -aes-256-cbc -salt -in $DIR_BACKUP/base-$DATA.tar.gz -out $DIR_YANDEX/base-$DATA_FTP.tar.gz.enc -k $PASSWORD" \
#echo $?

DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
     echo "$DATA Ошибка завершения для backup"
     echo "$DATA Ошибка завершения для backup" >> /home/user/backup/backup.log
else
     echo "$DATA Успешное завершение backup"
     echo "$DATA Успешное завершение backup" >> /home/user/backup/backup.log
fi
echo "--------------------------------------------------------------------" >> /home/user/backup/backup.log
 
Запуск:
$ sudo sh  backup_ftp.sh

Проверка расшифровки:

d:\us01>gpg --allow-secret-key-import --import privkey.txt
gpg: ключ 521D03509BD0BCD3: "backup <mail@backup.com>" не изменен
gpg: ключ 521D03509BD0BCD3: импортирован секретный ключ
gpg: Всего обработано: 1
gpg:                   неизмененных: 1
gpg:     прочитано секретных ключей: 1
gpg: импортировано секретных ключей: 1

d:\gpg>gpg -d -o gpg -d -r mail@backup.com -o base-7.tar.gz base-7.tar.gz.gpg
 

Комментариев нет:

Отправка комментария