Использование rsync через безопасный ssh ​​в работе cron

Я пытаюсь настроить скрипт оболочки под Debian GNU/Linux для резервного копирования каталога и подкаталогов на удаленный NAS под управлением Linux через SSH. Это соединение должно быть зашифровано.

Я пробовал пару разных подходов, включая rsync rsh и такие но без везения. Я знаю, как настроить crontab, но мне нужен скрипт, который будет запускаться без присмотра (то есть он не будет запрашивать пароль)

Кто-нибудь может мне помочь?

РЕДАКТИРОВАТЬ: я могу успешно войти без пароля сейчас.

Теперь проблема в том, чтобы заставить rsync копировать файлы в /backups/ в [remote system]:/backups/

Копирует только одну папку из /backups/ в [remote system]:/backups/,

РЕДАКТИРОВАТЬ: Кажется, локальная система имеет один / резервные копии и один / резервное копирование... Я пытался с / резервные копии, когда я должен был использовать / резервное копирование...

Заключительная команда: rsync -avzr -e ssh /backup/ admin@[IP]:/backups/

3 ответа

Вы также можете передать этот флаг rsync, чтобы использовать файл для пароля:

--password, файл

Можно легко изменить файл до 400, так что никто, кроме вашего пользователя, не сможет прочитать этот файл (и, конечно, root)

Rsync начиная с 2.6.x по умолчанию использует ssh для передачи. Так что об этом уже позаботятся, пока поддерживается удаленный rsync вашего NAS.

Что касается паролей без автоматической передачи, настройте аутентификацию на основе ключей ssh ​​для пользователя, с которым вы запускаете cron, и это должно быть сделано. Вот как вы это настроите - http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html

Ssh Key синхронизирует, вы сказали, что у вас это работает, но я думал, что все равно опубликую шаги

SSH в ваш NAS

Сделать ключ

ssh-keygen -t rsa on local machine 

Затем выполните синхронизацию с компьютером, с которого вы будете выполнять резервное копирование.

cat ~/.ssh/id_rsa.pub | ssh user@hostname    ‘cat>>.ssh/authorized_keys’

Сценарий резервного копирования Rync - Это создаст резервную копию на сегодня, затем sycn вчерашние файлы сегодня это уменьшит нагрузку на сеть, а затем будет rsync для резервного копирования сегодня.

#!/bin/sh

mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username

rsync -avz /storage/backups/`date --date=yesterday +\%Y-\%m-\%d`-`date--date=yesterday    +\%A`/$host/$username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/

rsync -avz -e ssh  /home/username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/

Вам также понадобится скрипт, который будет очищать резервные копии: он будет сохранять резервное копирование на неделю, я могу подтвердить, что он работает на NetGear NAS.

#!/bin/sh

# Definitions
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A)

# Delete backups from 7 days ago
rm -rf /storage/backups/$sevendaysago

вам нужно будет запустить это, чтобы сделать скрипты работоспособными

chmod u+x script.sh

в cron вам просто нужно добавить через crontab -e

@daily sh backupscript
1 17 * * * sh dailycleanup
Другие вопросы по тегам