Get ftp file list and get files on ftp via curl

Get ftp file list and get files via curl

Bash script for getting all files in chroot dir and get files

Create file with user:passwd@ip

user1:232323232@217.116.163.35
user2:dsfsfsfsf@217.116.163.35
user3:sfsfsfsf@217.116.163.35
#!/bin/bash
TRIC_CONNECTION_FILE="/docker-compose/scripts/tric_import/tric.list"
TRIC_DATA=$(cat ${TRIC_CONNECTION_FILE} | grep -ve '^#.*$' | sed '/^\s*$/d' )
HOME_DIR="/bup/tric"
ftp_get () {
while read -r line
do
		FTPUSER=$(echo "$line" |  cut -d\: -f1 )
    	FTPPASSWD=$(echo "$line" | cut -d\: -f2 | cut -d\@ -f1 )
    	FTPHOST=$(echo "$line" | cut -d\: -f2 | cut -d\@ -f2)
    	echo "${FTPUSER}:${FTPPASSWD}:${FTPHOST}"
    	cd ${HOME_DIR}/${FTPUSER}
    	echo "Проверяем есть ли директория ${HOME_DIR}/${FTPUSER}"
		if [[ ! -d "${HOME_DIR}/${FTPUSER}" ]]
		then
			echo "Диры нет - создаем ${HOME_DIR}/${FTPUSER}"
			mkdir -p ${HOME_DIR}/${FTPUSER}
		fi
		for FILE in $(curl --ftp-ssl --silent --use-ascii --ftp-method nocwd --list-only --user "${FTPUSER}":"${FTPPASSWD}" ftp://${FTPHOST}/)
		do
			FILE_SIZE_FTP=$(curl -s -L -I --use-ascii --ftp-ssl  --ftp-method nocwd ftp://${FTPHOST}/${FILE}  --user ${FTPUSER}:${FTPPASSWD} | gawk -v IGNORECASE=1 '/^Content-Length/ { print $2 }')
			FILE_SIZE_LOCAL=$(du -sb  ${HOME_DIR}/${FTPUSER}/${FILE} | gawk -v IGNORECASE=1 '{ print $1 }')
		    if [ ! -f "${HOME_DIR}/${FTPUSER}/${FILE}" ]
		    then
		    echo "Скачиваем ${FILE} для клиента ${FTPUSER} с хоста ${FTPHOST}"
		  	echo "Command line curl ftp://${FTPUSER}:${FTPPASSWD}@${FTPHOST}/${FILE} --output ${HOME_DIR}/${FTPUSER}/${FILE}"
		    curl --use-ascii --ftp-ssl  --ftp-method nocwd  ftp://${FTPHOST}/${FILE}  --user ${FTPUSER}:${FTPPASSWD} --output ${HOME_DIR}/${FTPUSER}/${FILE} || echo "error"
		    elif
		    echo "Сравниваем размер файла на сервере и на хосте. Файл ${FILE} на сервере весит ${FILE_SIZE_FTP} на клиенте его размер равен ${FILE_SIZE_LOCAL}"
		    [ "${FILE_SIZE_FTP}" == "${FILE_SIZE_LOCAL}" ] ; then
		    echo "Файл на клиенте и на сервере одинков по размеру - пропукаем копирование"
			else
		    echo "Скачиваем ${FILE} для клиента ${FTPUSER} с хоста ${FTPHOST} - так как изменился размер файла"
		  	echo "Command line curl ftp://${FTPUSER}:${FTPPASSWD}@${FTPHOST}/${FILE} --output ${HOME_DIR}/${FTPUSER}/${FILE}"
		    curl --use-ascii --ftp-ssl  --ftp-method nocwd  ftp://${FTPHOST}/${FILE}  --user ${FTPUSER}:${FTPPASSWD} --output ${HOME_DIR}/${FTPUSER}/${FILE} || echo "error"
		    fi
		    echo "Скачка ${FILE} для клиента ${FTPUSER} с хоста ${FTPHOST} завершена"
		done
		#chown -R ${FTPUSER} ${HOME_DIR}/${FTPUSER}
done < <(echo "${TRIC_DATA}" )
}
main () {
	ftp_get
}
main

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.