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