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
