Недавно возникла проблема с переброской по фтп каталога, со всем его содержимым, подпапок, файлов и т.д.
Существуют FTP клиенты/сервера с поддержкой mput и mget, но к сожалению не всегда есть возможность ими воспользоваться.
Для решения проблемы, я написал небольшой bash скприпт, который генерирует небольшой файл с командами для ftp.
Долго не буду описывать проблему и её решение, перейду к делу:
#!/bin/bash
#Задаем папку из которой всё будет пересылаться по фтп
FOLDER="/home/nol1ght"
#Запоминаем путь до папки в которой находится этот скрипт
FTPFILEFOLDER=$PWD
#Задаём имя файла, куда мы будем записывать наши скрипты
FTPFILE=$FTPFILEFOLDER/ftpscript.tmp
#Задаём имя папки которая будет корневой на удалённом фтп
REMOTEFOLDER=/`eval date +%d.%m.%y`
#Заходим в папку которую собираемся отправить на сервер
cd $FOLDER
#Смотрим на наличие файла, который содержит наши скрипты
#Он мог остаться от предыдущего запуска программы
if [ -f $FTPFILE ]; then
#Если он найден - удаляем
rm $FTPFILE
else
#Если не найден - создаём
echo "" >> $FTPFILE
fi
#Создаём на сервере основную папку, куда будем всё переписывать
echo "mkdir $REMOTEFOLDER" >> $FTPFILE
#Заходим в неё
echo "cd $REMOTEFOLDER" >> $FTPFILE
#Создаём на удалённом сервере под папки (чтобы соблюсти строение)
echo "mkdir $REMOTEFOLDER/home" >> $FTPFILE
#Заходим в неё
echo "cd $REMOTEFOLDER/home" >> $FTPFILE
#В цикле пробегаем по всем папкам и ищем файлы с расширением 'tar'
for file in `ls -1R $FOLDER *.tar`; do
#Если видим на конце двоеточие - значит это папка.
if [[ "$file" == *: ]]
then
#Убираем с конца ':'
DIR=${file//[:]/}
#Убираем с конца '/'
DIR=${DIR//[/]/}
#Создаём папку
echo "mkdir $REMOTEFOLDER$DIR" >> $FTPFILE
#Заходим в неё
echo "cd $REMOTEFOLDER$DIR" >> $FTPFILE
else
#Если это файл и расширение у него не tar, то идём к следующей итерации
if [[ "$file" != *.tar ]]; then
continue
fi
#Кладём файл в директорию на сервере
echo "put $DIR/$file" >> $FTPFILE
fi
done
#Прощаемся с сервером.
echo "bye" >> $FTPFILE
На выходе мы получили файл с названием ftpscript.tmp,
в котором записаны все действия которые нужно произвести FTP,
для того чтобы залить нашу папку.
Как им теперь воспользоваться?
В моём недавнем посте я писал про автоматизацию sFTP,
если посмотреть на его код, то можно легко понять куда поместить наш свежий скприт.
Удачной Вам работы с FTP!
source

Комментариев нет:
Отправить комментарий