Есть сервис Jenkins. Останавливаем его, архивируем папку с конфигом и данными и отсылаем по фтп архив на сервер. Скрипт следующий:
#! /bin/sh
#/var/lib/jenkins/jenkins_update.shjenkins="/etc/init.d/jenkins"
tar="/bin/tar"
from_dir="/var/lib/jenkins"
into_dir="/media/backups"
aptitude="/usr/bin/aptitude"
ftp="/usr/bin/ftp"FTP_HOST="10.0.0.21"
USER=jenkins
PASSWD=password
FTP_DIR=Jenkins_backupDATE=$(/bin/date +%d_%m_%Y)
FILE="backup_$DATE.jnkbkp"rm *.jnkbkp
$jenkins stop
$tar -cjvf ./$FILE *
# c-create; j-use bzip2; v-verbose; f-file$jenkins start
#uploading to ftp
echo " "; echo "Starting loading to ftp..."; echo " "
$ftp -v -n $FTP_HOST << FTPSESSIONuser $USER $PASSWD
binary
cd $FTP_DIR
send $FILE
disconnect
exit
FTPSESSION
exit 0
Фишка в том, что при автоматическом запуске (а скрипт должен работать по крону), раз на раз не приходится, но часто на сервер передается битый архив размером всего в 42 кБ. При этом, если запустить скрипт вручную, он ВСЕГДА отрабатывает правильно и архив заливается 100-метровый. Сначала было подозрение, что фтп включался в текстовом режиме, я специально дал команду binary, но как-то начало косячить снова. В чем дело - ума не приложу. Разницы никакой не должно быть - и руками и по крону скрипт запускается от рута. Косяк происходит по ходу в момент передачи на фтп, т.е. изначально на самом сервере все архивируется полностью.
Советую использовать lftp. Простой клиент для работы с фтп.
у меня с его помощью бекапы заливаются на фтп. Вообщем man lftp.p.s. в скриптах использую строчку:
#lftp -e "put ${DIR}/${NAME} && exit" -u ${USER},${PASS} ${IP_SERVER}
> Советую использовать lftp. Простой клиент для работы с фтп.
> у меня с его помощью бекапы заливаются на фтп. Вообщем man lftp.
> p.s. в скриптах использую строчку:
> #lftp -e "put ${DIR}/${NAME} && exit" -u ${USER},${PASS} ${IP_SERVER}точно такое название? что-то мне даже гугл ближайшее выдал - iftp, никакого намека на 1ftp вообще нет
root@debian-test:~# aptitude search lftp
p curlftpfs - filesystem to access FTP hosts based on FUSE and cURL
i lftp - Sophisticated command-line FTP/HTTP client programs
______________________________________________________________[root@centos-test ~]# yum search lftp
Loaded plugins: fastestmirror
Determining fastest mirrors
================================================================================================ Matched: lftp =================================================================================================
lftp.i386 : A sophisticated file transfer program
[root@centr-res ~]#
У Вас ошибка, там первый символ не 1, а l(L)
> У Вас ошибка, там первый символ не 1, а l(L)все норм ) с lftp вроде четко заработало
>> У Вас ошибка, там первый символ не 1, а l(L)
> все норм ) с lftp вроде четко заработалоошибся(( опять же вручную запускал - все нормально было, а автоматом заупстилось - те же 42 КБ
>>> У Вас ошибка, там первый символ не 1, а l(L)
>> все норм ) с lftp вроде четко заработало
> ошибся(( опять же вручную запускал - все нормально было, а автоматом заупстилось
> - те же 42 КБперед get дерни список файлов с фтп - может у тебя целевой файл кривой на время старта скрипта ...
>>>> У Вас ошибка, там первый символ не 1, а l(L)
>>> все норм ) с lftp вроде четко заработало
>> ошибся(( опять же вручную запускал - все нормально было, а автоматом заупстилось
>> - те же 42 КБ
> перед get дерни список файлов с фтп - может у тебя целевой
> файл кривой на время старта скрипта ...да нет - при запуске руками он ВСЕГДА отрабатывает хорошо
> да нет - при запуске руками он ВСЕГДА отрабатывает хорошоя не про это - перед перетаскиванием по фтп убедись командой ls что целевой файл заведомо цел - вывод ls в лог файл
чтобы знать что на момент запуска файл у тебя нормальный
Нашел, в чем проблема была. Скрипт в кроне запускается от имени рута. Когда мы переходим под какого-либо пользователя, мы оказываемся в его домашней папке. У так как мне надо было архивировать /var/lib/jenkins , а это и есть домашний каталог пользователя jenkins, я никуда не переходил и просто запуская скрипт, архивировал то что лежит в текущей папке. Т.е. tar ./*
а у рута естественно лежат совершенно другие файлы
> Косяк происходит по ходу в момент передачи на фтп, т.е. изначально на самом сервере все архивируется полностью.точно полностью?
вылови exit code у фтп клиента, посмотри что происходит
мож там диск бонально на приемнике переполняется