rsync + cron (создание скрипта) [РЕШЕНО]

#!/bin/bash
# Дата - далее используется при формировании имен папок
date=`date "+%Y-%m-%d-%H%M%S"`
# адрес скрипта - в эту же папку будем записывать конфиг и лог
SCRIPT_PATH=$(cd $(dirname $0) && pwd);
# файл конфига
proccfg=$SCRIPT_PATH/back.cfg
# Исходная папка (на продакшене)
SRC=/var/games/DATA/
# папка назначения на бэкап сервере (в ней будут подпапки по датам)
DST=/1TB/test/
# удаленный сервер (удаленным считаем продакшен если скрипт запущен на бэкапе)
# [email protected]

echo $proccfg
# подключаем конфиг (если существует)
source $proccfg

# проверяем флаг успешного окончания процесса
if [ "$NEND" != "true" ]
then
# Если переменная не установленна, проверяем запущен ли процесс
echo "NEND var not Exists or not true"
# проверяем что установлен номер предыдущего процесса
if [ "$PROCN" != "" ]
then
echo "PROCN exists"
echo "test "$PROCN.*$0
# парсим список процессов на наличие копии с номером предыдущего запуска
if ps ax | grep -v grep | grep $PROCN.*$0
then
echo "script alredy running. exit"
#Процесс запущен и выполняется. Выходим.
exit
else
#Процесс не был корректно завершен проверяем папку для продолжения
echo "script not running"
if [ "$PROCDIR" != "" ]
then
echo "processing folder exists in config"
# папка прописана (переменная со старым адресом уже существует)
else
echo "processing folder not exists in config, try normal start"
# Переменной нет - стандартный старт. Устанавливаем название новой папки
PROCDIR=Processing-$date
fi
fi
else
# Номера нет стандартный старт (скорее всего и конфиг нет)
echo "process number not exists in config, try normal start"
PROCDIR=Processing-$date
fi
else
# установлен флаг нормального окончания
echo "normal start"
PROCDIR=Processing-$date
fi

# Заносим в переменную PROCN номер текущего процесса
PROCN=$$
# Заносим номер и папку в конфиг
echo "PROCDIR=$PROCDIR" > $proccfg
echo "PROCN=$$" >> $proccfg

echo Processing-dir: $PROCDIR
echo Process-id: $PROCN
# echo start rsync

# Запускаем rsync
# флаг --link-dest=../Latest указывает на папку которая будет взята для основу для сравнения
# флаг --delete указывает, что удаленных на сервере файлов не будет в новой копии
# значение флагов -cxzrl ищите в man rsync
# по окончанию переименовываем папку
# удаляем старую и создаем символическую ссылку на созданную папку
# Записываем флаг успешного окончания
# (если связь порвалась во время копирования, то переименование и запись флага не будут выполнены)
rsync -cxzrl \
--delete \
#--backup-dir=/1TB/test/ \ (сам написал но не проканало, по этому закоментил )
--link-dest=/1TB/Latest \
$SRC $DST/$PROCDIR \
&& echo "rename dir" \
&& cd $DST \
&& mv $PROCDIR $date \
&& rm -f Latest \
&& ln -s $date Latest \
&& echo "NEND=true" >> $proccfg

вот что пишет

Use "rsync --daemon --help" to see the daemon-mode command-line options.
Please see the rsync(1) and rsyncd.conf(5) man pages for full documentation.
See http://rsync.samba.org/ for updates, bug reports, and answers
rsync error: syntax or usage error (code 1) at main.c(1622) [Receiver=3.1.1]
./rsync.sh: line 82: --link-dest=/1TB/Latest: No such file or directory
прошу знающих людей расписать строчки rsync. читал инет пишут что типа --link-dest=../Latest \ (создавать жесткие ссылки в каталоге DIR на не изменявшиеся файлы ) не совсем понимаю что это означает. и дальше вообще не понятно к чему. все дело в том, что сделал скрипт прописал его в cron, но почему то крон пытается запустить много раз. хотя казалось бы что "* */2,10-22 * * * и путь к файлу скрипта где указана команда с rsync и что ему делать" должен запускать через каждые 2 часа скрипт он типа отрабатывает. все это дело копируется на одной машине и мне не нужно с сервака на сервак бэкапить. но скрипт не работает
./rsync.sh: line 82: --link-dest=/1TB/Latest: No such file or directory

нет такой директории

sudo mkdir -p /1TB/Latest

это директория точно в корне должна быть, а не в домашней директории???
у меня настроена эта директория в корне, в ней получается вообще отдельный винт подключен судя по названию 1ТБ.
тогда другой вопрос:

1) работает ли эта комнда rsync -cxzrl \ --delete --link-dest=/1TB/Latest ... отдельно от скрипта

2) какие права на этой папке? всем группа можно работать в этой директории (создавать, удалять)???

3) в арче с августа 2012г крона нет, вместо него таймеры... как у вас работает крон???
1)
[root@Server ------]# rsync -cxzrl \ --delete --link-dest=/1TB/Latest
rsync: link_stat "/home/-----/ --delete" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1165) [sender=3.1.1]

добавил в домашнюю директорию Latest

[root@Server 1TB]# rsync -cxzrl \ --delete --link-dest=/1TB/Latest
rsync: link_stat "/1TB/ --delete" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1165) [sender=3.1.1]

2) пока что все команды выполняются от рута что пока не очень хорошо. я эт понимаю. это как раз чтоб пока не думать о правах на создаваемые папки.

3) пока что при вводе команды
[root@Server 1TB]# crontab -l
00 */2,10-22 * * * rsync --delete --backup --backup-dir=/1TB/backup-`date +%Y%m%d-%H` -avz '/var/data/data' /var/rezerv/

и вот как раз данный скрип перестал с недавних обновлений работать. ему стало требоваться чтоб именно было написано не такое выполнение, а через скрипт. дабы скрит выполняется но почему-то в много численных процессах. забивая всю память.
Команда не отрабатывает даже вне скрипта, значит, она неправильная
GitHub, ArchWiki, AUR
Kycok
Команда не отрабатывает даже вне скрипта, значит, она неправильная

я бы так не сказал!!! именно при вводе в терминале она работает, а когда ее пишешь в кронтаб то она не работает работает только в таком ввиде
* */2,10-22 * * * /home/-----/rsync.sh

но раньше работала в полном виде что написанна выше. но и это не важно. важно почему сам скрипт что выше не работает???? почему именно он, потому, что он не будет запускаться в следующий раз пока запущенный в предыдущий раз с этого скрипта, т.к. там идет анализ на то чтоб смотреть не был ли запущен в предыдущий раз и смотрит PID процесса. чтоб у меня небыло цикличности запусков как это происходит когда запускаешь с файла скрипта в таком виде
rsync --delete --backup --backup-dir=/1TB/backup-`date +%Y%m%d-%H` -avz '/var/data/data' /var/rezerv/
попробуйте тогда для проверки в cron установить точный час и точную минуту запуска скрипта

и добавьте эту строчку (если ее нет) в кронтаб и в скрипт:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
ivan
именно при вводе в терминале она работает
А это тогда что??
[root@Server ------]# rsync -cxzrl \ --delete --link-dest=/1TB/Latest
rsync: link_stat "/home/-----/ --delete" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1165) [sender=3.1.1]
GitHub, ArchWiki, AUR
Kycok
ivan
именно при вводе в терминале она работает
А это тогда что??
[root@Server ------]# rsync -cxzrl \ --delete --link-dest=/1TB/Latest
rsync: link_stat "/home/-----/ --delete" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1165) [sender=3.1.1]

вот я и спрашиваю. почему не работает. зачем меня то об этом спрашивать???? с начала что ли не читали?!!!!
 
Зарегистрироваться или войдите чтобы оставить сообщение.