Показаны сообщения с ярлыком ftp. Показать все сообщения
Показаны сообщения с ярлыком ftp. Показать все сообщения

понедельник, 30 ноября 2020 г.

FileZilla Server for Windows для backup

Выгрузка файла на FTP-сервер с помощью curl
Наш сервер будет выгружать backup на компьютер в локальной сети,
на котором достаточно места на диске. Если linux компьютеров нет
используем компьютер под windows.

Download FileZilla Server for Windows
Архив версий
Изменения во всех версиях
Last version ever to support Windows XP 0.9.42 !!!

Примечание: последняя версия сервера совместимая с Windows XP/2003 - v0.9.43 (2013-12-16).

 

Установить с правами администратора.

1. Убрать консоль при загрузке:


2.  Задать пользователя и пароль:


3. Задать папку и права:


4.  Убрать лимиты:

5. Настройка сети:
 Если ip адрес внутри локальной сети меняется, задать ip.
Возможно открыть в брандмауре 21 порт для входящих соединений.

Пусть адрес 192.168.0.5 пользователь test пароль test

На компьютере откуда будем копировать архивы по маске

В папке с архивами создать

copy_ftp.bat

@echo off
SET DATETIME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
REM файлы вида 2020-11-30_21-00-38.tar.gz
SET UPLOAD_FILE_NAME=*%DATETIME%*
SET FTP_PATH_TO_STORE_FILE=/Backup/win
SET USERNAME=test
SET PASSWORD=test

echo %USERNAME%> upload.txt
echo %PASSWORD%>> upload.txt
echo cd %FTP_PATH_TO_STORE_FILE%>> upload.txt
echo mput %UPLOAD_FILE_NAME%>> upload.txt
echo quit >> upload.txt
ftp -i -s:upload.txt 192.168.0.5
pause
del upload.txt

Сохранить.

Запустить:

copy_ftp.bat

Пусть сегодня 2020-11-30

Тогда после запуска copy_ftp.bat

 файлы вида 2020-11-30_21-00-38.tar.gz будут скопированы на ftp сервер

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

FileZilla Server for Windows для backup


Выгрузка файла на FTP-сервер с помощью curl
Наш сервер будет выгружать backup на компьютер в локальной сети,
на котором достаточно места на диске. Если linux компьютеров нет
используем компьютер под windows.

Download FileZilla Server for Windows
Архив версий
Изменения во всех версиях
Last version ever to support Windows XP 0.9.42 !!!

Примечание: последняя версия сервера совместимая с Windows XP/2003 - v0.9.43 (2013-12-16).

 

Установить с правами администратора.

1. Убрать консоль при загрузке:


2.  Задать пользователя и пароль:


3. Задать папку и права:


4.  Убрать лимиты:

5. Настройка сети:
 Если ip адрес внутри локальной сети меняется, задать ip.
Возможно открыть в брандмауре 21 порт для входящих соединений.

Пусть адрес192.168.0.5 пользователь test пароль test

Прописать в скрипте:

curl --upload-file $DIR_YANDEX/base-$DATA.tar.gz.enc ftp://test:test@192.168.0.5

Проверка из под linux
$ ls
postgresql_10.3_3.1C_amd64_addon_deb.tar.bz2  postgresql_10.3_3.1C_amd64_deb.tar.bz2
user@u1604:~/test$ curl --upload-file postgresql_10.3_3.1C_amd64_deb.tar.bz2
ftp://test:test@192.168.0.5
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 6205k    0     0  100 6205k      0  13.0M --:--:-- --:--:-- --:--:-- 13.0M

Использование FTPS или FTP over TLS

Для начала вам нужно создать сертификат, для чего можно использовать генератор сертификатов сервера FileZilla. Для создания сертификата генератор потребует от вас код вашей страны, города и т.д.

Будьте настолько достоверными, насколько это возможно, т.к. от этого зависит надежность сертификата.

Размер ключа для сертификата может быть указан в верхней части интерфейса генератора: 1024 бита, 2048 бит, 4096 бит. Чем больше размер ключа, тем более надежным будет сгенерированный сертификат и обмен ключами в начале каждого соединения. Тем не менее, размер ключа также влияет на загрузку процессора при создании подключения. При применении шифрования сервер FileZilla будет нагружать процессор вычислениями для зашифровки отсылаемых данных и дешифровки принимаемых. Размер канала также влияет на загрузку процессора. Если у вас установлен медленный канал, к примеру около 1.5Mbps, вам не следует волноваться о нагрузке на процессор. Лучше всего определить нагрузку опытным путем.




Файл certificate.crt следует разместить на клиенте.


Доступ к серверу по ftps:

Просмотр файлов:
$ curl --ftp-ssl  --user test:test ftp://192.168.1.246 --cacert certificate.crt
-rw-r--r-- 1 ftp ftp           1794 Feb 17 17:44 backup_ftp.sh
-rw-r--r-- 1 ftp ftp      453877629 Feb 17 14:47 base-7.tar.gz
-rw-r--r-- 1 ftp ftp      453877648 Feb 17 14:09 base-7.tar.gz.enc
-rw-r--r-- 1 ftp ftp      453878245 Feb 17 14:36 base-7.tar.gz.gpg
-rw-r--r-- 1 ftp ftp        1015759 Jul 16  2016 CarotDAV_2016_07_16.rar
-rw-r--r-- 1 ftp ftp        1015764 Jul 17  2016 CarotDAV_2016_07_17.rar
-rw-r--r-- 1 ftp ftp           5038 Feb 17 18:54 certificate.crt



Загрузка файла:
$ curl --ftp-ssl  --user test:test ftp://192.168.1.246 --cacert certificate.crt -T pubkey.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3169    0     0  100  3169      0   7886 --:--:-- --:--:-- --:--:--  7883

Скачать файл:
$ curl --ftp-ssl  --user test:test ftp://192.168.1.246/base-7.tar.gz.gpg --cacert certificate.crt  -o base-7.tar.gz.gpg
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  432M  100  432M    0     0   148M      0  0:00:02  0:00:02 --:--:--  148M


Выгрузка файла на 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
 

вторник, 23 января 2018 г.

ubuntu, debian pure-ftpd


$ nano ftp.sh

Скопируем из буфера следующий скрипт:

 #!/bin/bash
# Настройка ftp пользователь: test пароль: test
sudo apt install pure-ftpd -y
sudo groupadd ftpgroup
sudo usermod -aG ftpgroup user
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
sudo mkdir /home/user/test
sudo chown -R user:ftpgroup /home/user/test
#sudo pure-pw useradd test -u user -d /home/user/test
# Заведем пользователя ftp test с паролем test
sudo echo -e "test\ntest\n" | sudo pure-pw useradd test -u user -d /home/user/test
sudo pure-pw mkdb
sudo service pure-ftpd restart

Сохранить.
$ chmod +x ftp.sh
$ ./ftp.sh