Выгрузка файла на 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
Подготовительная работа описана здесь
$ 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
Комментариев нет:
Отправить комментарий