web-dev-qa-db-ja.com

cronジョブでセキュアsshを介してrsyncを使用する

私はDebianGNU/Linuxでシェルスクリプトを設定して、ディレクトリとサブディレクトリをリモートNAS Linux overSSHを実行しています。この接続を暗号化する必要があります。

rsync rshなどを含むいくつかの異なるアプローチを試しましたが、運がありませんでした。 crontabの設定方法は知っていますが、無人で実行するスクリプトが必要です(つまり、パスワードを要求されません)

誰か助けてもらえますか?

編集:パスワードなしで正常にログインできるようになりました。

ここでの問題は、rsyncを取得して/backups/内のファイルを[remote system]:/backups/にコピーすることです。

/backups/から[remote system]:/backups/に1つのフォルダのみをコピーします。

編集:ローカルシステムには/ backupsと/ backupが1つあるようです.../backupを使用する必要があるときに、/ backupsを試してみました...

最終コマンド:rsync -avzr -e ssh /backup/ admin@[IP]:/backups/

3
Axel Latvala

2.6.x以降のrsyncは、デフォルトで転送にsshを使用します。したがって、リモートNAS rsyncがサポートされている限り、すでに処理されています。

パスワードを使用しない無人転送については、cronを実行しているユーザーのsshキーベースの認証を設定する必要があります。設定方法は次のとおりです--- http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html

2
Chida

このフラグをrsyncに渡して、パスワードにファイルを使用することもできます。

--password-file

ファイルを400に簡単にchmodできるので、ユーザー以外の誰もそのファイル(そしてもちろんルート)を読むことができません

2
coderwhiz

Ssh Keyの同期では、これは機能していると言われましたが、それでも手順を投稿すると思いました

nASにSSH接続する

キーを作るには

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/

バックアップをクリーンアップするスクリプトも必要になります。これにより、1週間のバックアップが保持されます。これは、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
2
Paperghost