Я пытаюсь настроить сценарий оболочки под Debian GNU / Linux для резервного копирования каталога и подкаталогов на удаленный NAS под управлением Linux через SSH. Это соединение должно быть зашифровано.
Я пробовал несколько разных подходов, включающих rsync rsh
и такие, но без удачи. Я знаю, как настроить crontab
, но мне нужен скрипт, который будет работать без присмотра (т.е. не будет запрашивать пароль)
Кто-нибудь может мне помочь?
РЕДАКТИРОВАТЬ: теперь я могу успешно войти в систему без пароля.
Теперь проблема состоит в том, чтобы заставить rsync копировать файлы в /backups/
к [remote system]:/backups/
Копирует только одну папку из /backups/
к [remote system]:/backups/
.
РЕДАКТИРОВАТЬ: Кажется, в локальной системе есть один / backups и один / backup ... Я пробовал с / backups, когда мне следовало использовать / backup ...
Последняя команда: rsync -avzr -e ssh /backup/ admin@[IP]:/backups/
Синхронизация ключей Ssh вы сказали, что у вас это работает, но я подумал, что все равно опубликую шаги
ssh в ваш NAS
Сделать ключ
ssh-keygen -t rsa on local machine
Затем выполните синхронизацию с компьютером, с которого будет выполняться резервное копирование.
cat ~/.ssh/id_rsa.pub | ssh user@hostname ‘cat>>.ssh/authorized_keys’
Сценарий резервного копирования Rync - это сделает резервную копию папки на сегодня, затем синхронизирует вчерашние файлы сегодня, это снизит нагрузку на сеть, затем будет выполнено резервное копирование 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/
Вам также понадобится скрипт, который очистит резервные копии: он сохранит резервную копию на неделю, я могу подтвердить, что это работает на готовых nas от Netgear.
#!/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
Вы также можете передать этот флаг в rsync, чтобы использовать файл для пароля:
--password-файл
Можно легко изменить файл до 400, чтобы никто, кроме вашего пользователя, не мог прочитать этот файл (и, конечно, root)
rsync с версии 2.6.x по умолчанию использует ssh для передачи. Так что об этом уже позаботились, пока поддерживается удаленный NAS rsync.
Что касается автоматической передачи без пароля, настройте аутентификацию на основе ключа ssh для пользователя, от имени которого вы запускаете cron, и это должно быть сделано. Вот как вы это настроили - http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html