Монтирование FTP в папку сервера

Монтирование FTP в папку сервера

Собственно, для использования rsync задумал такую штуку:
монтируем ftp в файловую систему как папку, делаем синхронизацию и отмонтируем.
Для монтирования есть замечательная утилита curlftpfs.

Устанавливаем:

$ sudo yum install curlftpfs

Подгружаем модуль ядра Fuse

$ sudo modprobe fuse

Команда монтирования в общем виде:

$ sudo curlftpfs ftp.server.ru/folder /mnt/ftp/ -o user=ftpuser:ftppassword

Чтобы монтировать не от root, дописываем в файл /etc/fuse.conf строчку user_allow_other, а в команду монтирования в конце после запятой allow_other

$ curlftpfs ftp.server.ru/folder /mnt/ftp/ -o user=ftpuser:ftppassword,allow_other

Размонтирование :

$ sudo fusemount -u /mnt/ftp

Посмотреть, что у нас в данный момент смонтировано:

$ df -h

Мой скрипт для бэкапа через монтирование  ftp:

#!/bin/bash
HOST="0.0.0.0"
USER="User-backup"
PASSWORD="Password"
DATE=`date +%m.%d.%Y`
TIME=`date +%H:%M:%S`
LOGFILE="/var/log/rsyncftp/rsyncftp-$DATE.log"
# монтируем каталог FTP как папку
curlftpfs $HOST/monitor /mnt/ftp/ -o user=$USER:$PASSWORD
# директория откуда забираем файлы
FILE="/var/spool/asterisk/monitor/"
# директория в системе куда смонтирован удалённый FTP
BACKUPDIR="/mnt/ftp"
# директория для временных файлов
# по логике работы rsync, он создает временные файлы на стороне приемника а потом делает move
# поскольку у нас все-таки FTP так не работает, указываем временную папку в файловой системе
TEMPDIR="/tmp/rsync"
#создаем удобочитаемый лог-файл
echo "=============================================================" > $LOGFILE
echo "This is the LOG file of telephone records backup script:" >> $LOGFILE
echo "=============================================================" >> $LOGFILE
echo " " >> $LOGFILE
echo Data: $DATE Time: $TIME >> $LOGFILE
echo "" >> $LOGFILE
echo "-------------------------------------------------------------" >> $LOGFILE
echo "-------------------- Log of rsync working: ------------------" >> $LOGFILE
echo "-------------------------------------------------------------" >> $LOGFILE
echo "" >> $LOGFILE
rsync -rltzcuh --stats --progress --temp-dir=$TEMPDIR $FILE $BACKUPDIR >> $LOGFILE
# используемые здесь опции rsync чтобы не забыть:
# -a архивация (соответствует -rlptgoD ), тут не годится, права на FTP не передаются
# -r рекурсивно с подпапками
# -l копировать символьные ссылки
# -p копировать права пользователей
# -t копировать время создания файла
# -g копировать права группы
# -o копировать владельца
# -D копировать информацию о символьных и блочных устройствах
# -z сжимать при передаче
# -u update - копировать только изменившиеся файлы
# -h вывод логов в читаемой форме
# -v степень детализации от v до vvvv
# --stats вывод статистики
# --progress вывод прогресса работы
# --temp-dir= папка для временных файлов, по-умолчанию создается на стороне - приёмнике
# -n эмулировать работу, нужно для отладки
# считаем размер папки и размер архивов и выводим
DUFILE=`du -sh $FILE`
DUBACKUP=`du -sh $BACKUPDIR`
echo "" >> $LOGFILE
echo "-------------------------------------------------------------" >> $LOGFILE
echo "-------------------------------------------------------------" >> $LOGFILE
echo "Size of catalog with recordings files: " >> $LOGFILE
echo " $DUFILE" >> $LOGFILE
echo "-------------------------------------------------------------" >> $LOGFILE
echo "Size of the Backup catalog (on FTP):" >> $LOGFILE
echo " $DUBACKUP" >> $LOGFILE
echo "-------------------------------------------------------------" >> $LOGFILE
# выводим список лог-файлов
echo "-------------------------------------------------------------" >> $LOGFILE
echo "List of logfiles in /var/log/rsyncftp/ :" >> $LOGFILE
echo "" >> $LOGFILE
find /var/log/rsyncftp/ -type f -print >> $LOGFILE
# удаляем логи старше 60 дней
echo "" >> $LOGFILE
echo "-------------------------------------------------------------" >> $LOGFILE
echo "List of deleted logfiles older 60 days:" >> $LOGFILE
echo "" >> $LOGFILE
find /var/log/rsyncftp/ -type f -mtime +61 -print -delete >> $LOGFILE
echo "" >> $LOGFILE
echo "=============================================================" >> $LOGFILE
echo "========== End of LOG file, best wishes from Welk ===========" >> $LOGFILE
echo "=============================================================" >> $LOGFILE
echo "" >> $LOGFILE
# отправляем лог по почте
cat $LOGFILE | mail -s "Asterisk records backup LOG of $DATE" mail@domain.com
umount /mnt/ftp