vatolkin (vatolkin) wrote in ru_shell,
vatolkin
vatolkin
ru_shell

bash скрипты для ftp

Встала передо мной задача - нужно было собранные бэкапы заливать на удаленный сервер, попутно удаляя с него лишние бэкапы.

Возможно кому-нибудь ещё пригодятся эти скрипты, так что далее с небольшими комментариями:

Первый скрипт находит список подпапок в директории (в моём случае /backup), и из каждой из них копирует последний бєкап на удаленный сервер. При этом на удаленном сервере всё складывается в одну директорию.
#!/bin/sh
for user in `/bin/ls /backup/`
do
/usr/bin/ftp -u ftp://login:password@backup.example.com/last/`/bin/date +%Y-%m-%d`-$user.tar.gz /backup/$user/*-`/bin/date +%Y-%m-%d`.tar.gz
done


Второй - удаляет файлы с фтп. Нет погодите, так было бы слишком просто, второй скрипт будет только листинг директории фтп брать. Кстати, его автор - не я. Он был найден в уже готовом виде:
# cat /root/ftplist.sh
#!/bin/sh
hostname="ftp://$1:$2@$3/"
ftp $hostname << EOF
cd last
ls -1R
EOF


Третий - запускает второй скрипт с нужными параметрами, и фильтрует вывод. В результате остаётся только список файлов подлежащих удалению (т.е. все файлы, кроме содержащих сегодняшнюю дату):
# cat /root/ftplistold.sh
#!/bin/sh
/root/ftplist.sh login password backup.example.com | /usr/bin/grep '^-' | /usr/bin/awk '{print $9}' | /usr/bin/grep -v `/bin/date +%Y-%m-%d`


Ну и наконец четвертый скрипт - будет у третьего получать список файлов для удаления, и непосредственно удалять на фтп-сервере:
#!/bin/sh
echo open backup.example.com > /tmp/ftpbackuplist
echo user login password >> /tmp/ftpbackuplist
echo cd last >> /tmp/ftpbackuplist
for a in `/root/ftplistold.sh`
do
echo "delete /last/"$a >> /tmp/ftpbackuplist
done
FTPCMDS=`/bin/cat /tmp/ftpbackuplist`
/bin/rm /tmp/ftpbackuplist
/usr/bin/ftp -inv << EOF
$FTPCMDS
EOF


Вот собственно и всё. Если запускать чистилку до полуночи - а копировалку после, то на резервном сервере будет лежать 2 комплекта бэкапов. Если оба скрипта запускать после полуночи - то только один комплект.
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

  • 3 comments