Недавно возникла проблема с переброской по фтп каталога, со всем его содержимым, подпапок, файлов и т.д.
Существуют 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
Комментариев нет:
Отправить комментарий