Использование 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