Debian GNU/Linux でシェル スクリプトを設定して、SSH 経由で Linux を実行しているリモート NAS にディレクトリとサブディレクトリをバックアップしようとしています。この接続は暗号化する必要があります。
などを含むいくつかの異なるアプローチを試しましたrsync rsh
が、うまくいきませんでした。 の設定方法はわかっていますcrontab
が、無人で実行されるスクリプトが必要です(つまり、パスワードを要求しません)。
誰か助けてくれませんか?
編集: パスワードなしで正常にログインできるようになりました。
問題は、rsyncを使ってファイルをコピーすることです/backups/
。[remote system]:/backups/
/backups/
からに 1 つのフォルダーのみをコピーします[remote system]:/backups/
。
編集: ローカル システムには /backups が 1 つと /backup が 1 つあるようです... /backup を使用するべきところを /backups で試してしまいました...
最終コマンド:rsync -avzr -e ssh /backup/ admin@[IP]:/backups/
答え1
rsync 2.6.x 以降では、転送にデフォルトで ssh が使用されます。したがって、リモート NAS rsync がサポートされている限り、すでに処理されています。
パスワードなしの無人転送については、cron を実行しているユーザーに対して SSH キーベースの認証を設定する必要があります。設定方法は次のとおりです。http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html
答え2
パスワードにファイルを使用するには、このフラグを rsync に渡すこともできます。
--パスワードファイル
ファイルを 400 に chmod すると、ユーザー (もちろんルート) 以外はそのファイルを読み取れなくなります。
答え3
SSHキーの同期は機能しているとおっしゃっていましたが、手順を投稿しようと思いました
NASにSSHで接続する
キーを作るには
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/
バックアップをクリーンアップするスクリプトも必要です。これにより1週間分のバックアップが保存されます。Netgearのready 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