LINUX.ORG.RU

rsync не выполняется из задания crontab

 , ,


0

1

os: Выпуск Linux Mint 18.2 Sonya 64-разрядный

Создан 1c_SQL_Dt.sh , назначен как исполняемый. Фрагмент состава 1c_SQL_Dt.sh:

#!/bin/bash
clear
df -h
date '+Date: %d/%m/%y    Time: %H:%M:%S'
bash -c '/usr/bin/rsync -avrs --archive --delete --progress LinuxMint@192.168.18.2:/cygdrive/e/arhiv/1cSQL/ /arhiv1/Arhiv_E/1cSQL/'
/usr/bin/rsync -avrs --archive --delete --progress LinuxMint@192.168.18.2:/cygdrive/e/arhiv/1cDt/ /arhiv1/Arhiv_E/1cDt/
....
....
df -h

date '+Date: %d/%m/%y    Time: %H:%M:%S'

Создано задание crontab:

SHELL=/bin/bash
#1 8 * * * /arhiv1/CMD/1c_SQL_Dt.sh
#1 8 * * * bash /arhiv1/CMD/1c_SQL_Dt.sh > /arhiv1/CMD/1c_SQL_Dt.log
59 11 * * * bash /arhiv1/CMD/1c_SQL_Dt.sh > /arhiv1/CMD/1c_SQL_Dt.log

В результате выполнения задания crontab в фале /arhiv1/CMD/1c_SQL_Dt.log:

Файл.система   Размер Использовано  Дост Использовано% Cмонтировано в

udev             3,9G            0  3,9G            0% /dev
tmpfs            799M          34M  765M            5% /run
/dev/sda6         96G         6,5G   88G            7% /
tmpfs            3,9G         440K  3,9G            1% /dev/shm
tmpfs            5,0M         4,0K  5,0M            1% /run/lock
tmpfs            3,9G            0  3,9G            0% /sys/fs/cgroup
/dev/sdd1        1,8T          84M  1,7T            1% /arhiv3
/dev/sdb1        1,8T         971G  771G           56% /arhiv1
/dev/sdc1        1,8T          69M  1,7T            1% /arhiv2
/dev/sda7         48G          18M   46G            1% /tmp
/dev/sda1        277M         175M   88M           67% /boot
/dev/sda8        308G         613M  305G            1% /home
cgmfs            100K            0  100K            0% /run/cgmanager/fs
tmpfs            799M          40K  799M            1% /run/user/1000
Date: 29/12/17    Time: 11:59:01
Файл.система   Размер Использовано  Дост Использовано% Cмонтировано в
udev             3,9G            0  3,9G            0% /dev
tmpfs            799M          34M  765M            5% /run
/dev/sda6         96G         6,5G   88G            7% /
tmpfs            3,9G         440K  3,9G            1% /dev/shm
tmpfs            5,0M         4,0K  5,0M            1% /run/lock
tmpfs            3,9G            0  3,9G            0% /sys/fs/cgroup
/dev/sdd1        1,8T          84M  1,7T            1% /arhiv3
/dev/sdb1        1,8T         971G  771G           56% /arhiv1
/dev/sdc1        1,8T          69M  1,7T            1% /arhiv2
/dev/sda7         48G          18M   46G            1% /tmp
/dev/sda1        277M         175M   88M           67% /boot
/dev/sda8        308G         613M  305G            1% /home
cgmfs            100K            0  100K            0% /run/cgmanager/fs
tmpfs            799M          40K  799M            1% /run/user/1000
Date: 29/12/17    Time: 11:59:07

т.е. rsync не выпоняются

но при запуске строки из терминала

/arhiv1/CMD/1c_SQL_Dt.sh > /arhiv1/CMD/1c_SQL_Dt.log
rsync выполняется.

Прошу помочь.



Последнее исправление: DiegoLidabo (всего исправлений: 1)

И не будет выполняться с флагами/опциями -avrs.
Есть одна особенность rsync, что не позволит воплотить замысел в реальность.

Убери -a, и подбирай флаги аккуратнее.

blitz
()

а в почте что?

ты stderr не перенаправляешь, там что-нибудь может быть

anto215 ★★
()

Опция --progress врядли будет работать без терминала. Впрочем, врядли rsync из-за этого не работает. Смотри почту, там выхлоп stderr, заботливо собранный кроном для тебя.

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от DiegoLidabo

Случается и такое.

Разберёмся, почему rsync не желает копировать?
Покажи листинг исходной директории, по комманде ls -al, пожалуйста.

blitz
()
Ответ на: комментарий от blitz

Переписал некоторые строки в файле sh

#!/bin/bash
clear

df -h > /arhiv1/CMD/1c_SQL_Dt.log

date '+Date: %d/%m/%y    Time: %H:%M:%S' >> /arhiv1/CMD/1c_SQL_Dt.log
#> /arhiv1/CMD/1c_SQL_Dt.log

bash -c '/usr/bin/rsync -r --archive --delete --log-file=/arhiv1/CMD/1c_SQL_Dt.log LinuxMint@192.168.0.2:/cygdrive/e/arhiv/1cSQL/ /arhiv1/Arhiv_E/1cSQL/'

Вот результат в Log e

2017/12/29 16:41:02 [25368] rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
2017/12/29 16:41:02 [25368] rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]

я так понимаю, что rsync надо запускать от имени определеного пользователя. Уже из дома перечитаю параметры и доделаю

DiegoLidabo
() автор топика
Ответ на: комментарий от DiegoLidabo

> я так понимаю, что rsync надо запускать от имени определеного пользователя.

Теперь - всё правильно понимаешь.
rsync, не станет копировать файлы с носителя файлов windows ntfs - /cygdrive/.

Что создаёт определённые неудобства.
И только при копировании дисков windows/cyg.

blitz
()

rsync с одним двоеточием использует ssh. Крон не знает ни про какие ключи ssh/агента. Дальше объяснять?

disarmer ★★★
()
Ответ на: комментарий от DiegoLidabo

У крона нет доступа к ключу, если ты его прокидываешь через ssh-agent, потому что он не знает где сокет агента. Нужно либо создавать отдельный ключ без passphrase и раскладывать его, либо запускать на приёмнике rsyncd и указывать два двоеточия в клиенте

disarmer ★★★
()
Ответ на: комментарий от disarmer

Если без ssh-agent, то тоже не будет работать, ведь у рута свой закрытый ключ в .ssh а сервер ждёт ключ клиента. Надо сказать крону использовать нужного пользователя.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Можно добавить ключ рута в authorized_keys пользователя. С этим нет проблем, кроме безопасности и оверхеда в шифровании

disarmer ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.