Привет! Я пытаюсь использовать rsync для копирования файлов между двумя серверами Linux. и 10.04.4
Я настроил ssh и скрипт, работающий под заданием cron. это сообщение, которое я получаю с работы cron.
Кому: mark @ ubuntu Тема: Cron ~ / rsync.sh Тип содержимого: текст / обычный; charset = ANSI_X3.4-1968 X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: Идентификатор сообщения: < 20120708183802.E0D54FC2C0@ubuntu> Дата: вс, 8 июля 2012 14:38:01 -0400 (EDT)
rsync: link_stat "/ home / mark / # 342 # 200 # 223rsh = ssh" не удалось: нет такого файла или каталога (2) rsync: opendir "/ Библиотека /WebServer/Documents/.cache "не удалось: разрешение отклонено (13) rsync: recv_generator: mkdir" / Library / Library "не удалось: разрешение отклонено (13) * Пропуск любого содержимого из этого каталога с ошибками * rsync error : некоторые файлы / атрибуты не были перенесены (см. предыдущие ошибки) (код 23) на main.c (1060) [sender = 3.0.7]
blockquote>В.1. Может кто-нибудь сказать мне, почему я получить это сообщение ->
rsync: link_stat "/ home / mark / # 342 # 200 # 223rsh = ssh" не удалось: нет такого файла или каталога (2)
скрипт:
#!/bin/bash SOURCEPATH='/Library' DESTPATH='/Library' DESTHOST='192.168.1.15' DESTUSER='mark' LOGFILE='rsync.log' echo
Q2. Я знаю, что у меня есть несколько проблем с разрешениями, все файлы, которые я копирую, обычно требуют, чтобы я использовал sudo для манипулирования ими. Тогда у меня вопрос, есть ли способ выполнить эту работу, не предоставив пользователю права root или не используя root при входе в систему?
Спасибо за помощь.
\n\n' >> $LOGFILE rsync -av –rsh=ssh $SOURCEPATH $DESTUSER@$DESTHOST:$DESTPATH 2>&1 >> $LOGFILE echo “Completed at: `/bin/date`” >> $LOGFILEQ2. Я знаю, что у меня есть несколько проблем с разрешениями, все файлы, которые я копирую, обычно требуют, чтобы я использовал sudo для манипулирования ими. Тогда у меня вопрос, есть ли способ выполнить эту работу, не предоставив пользователю права root или не используя root при входе в систему?
Спасибо за помощь.
Исправьте права на эти файлы, используя
chown -R Mark:Mark *
, вам придется делать это для всех этих каталогов .dot, если вы не получите Fanny с find -exec
.Что касается Q1, я предполагаю, что вы поставили двойную черту перед «rsh» как «en-dash», то есть один символ: - так что rsync интерпретирует его как имя файла, а не как параметр для программа.
Что касается Q2, если вы хотите дать пользователю без полномочий root возможность что-то делать с файлами, иначе вы не сможете манипулировать, вам придется либо изменить разрешения для файлов, либо повысить разрешения для файлов. пользователь, например с помощью sudo
.
sudo
можно настроить так, чтобы определенные пользователи могли выполнять определенные команды от имени пользователя root без запроса пароля, поэтому вам нужно выделить то, что вам нужно сделать от имени пользователя root, в скрипт, который их выполняет (и только они), а затем разрешить этот сценарий называться как root. Вот пример из одного из моих /etc/sudoers
файлов:
Cmnd_Alias F2B_CLIENT_PING = /usr/bin/fail2ban-client ping
nagios ALL = NOPASSWD: F2B_CLIENT_PING
То, что сделано выше, позволяет пользователю «nagios» выполнять «/ usr / bin / fail2ban-client ping» от имени пользователя root с помощью sudo без запроса пароля. Я использую это в своем мониторинге.
У вас будет что-то вроде:
Cmnd_Alias RSYNC_BACKUP = /usr/local/sbin/backup_my_stuff_with_rsync.sh
youruser ALL = NOPASSWD: RSYNC_BACKUP
, а затем в вашем кроне вы будете вызывать sudo /usr/local/sbin/backup_my_stuff_with_rsync.sh
Сначала вы можете проверить его в командной строке, чтобы убедиться, что оно не запрашивает пароль.
Обратите внимание, что запуск сценария с правами root является большой проблемой, и поэтому вы должны убедиться, что ваш сценарий безопасен и корректен. Если бы вы могли найти способ сделать это без полномочий root, это было бы лучше.