Ubuntuでssh経由でrsyncをcronでやる

ubuntuでは起動時には一般ユーザなので少し複雑。と言うのも一般ユーザでsudoを付けても今いるディレクトリーはユーザーのhomeである。その辺がこんがらがる元だった
cronでrsyncを使うが、パスワードを聞かれないようにする(sudoするのでユーザはroot)
まずは鍵を作る(サーバー側のsshやrsyncは設定済み)ubuntuのrootのパスワードは設定済み
$ su –
# mkdir .ssh
# ssh-keygen
どこに保存するか聞かれるので、/root/.ssh/id_rsaを指定、パスフレーズはエンターだけで進む。

.sshに出来たid_rsa.pubを何らかの方法でサーバーのに入れるが、私はg-mailのWEB mailでid_rsa.pubを添付し自分から自分に送って、サーバー側のブラウザでg-mailを開き、/root/.ssh/に保存。ファイル名をauthorized_keysに変更、もしすでにauthorized_keysがあればその最後にコピー(gmailを使う理由、サーバー側のsshはパスワードログインを許して無い、そしてauthorized_keysにubuntuのキーが入っていないので、他のコンピュータからscpをしないとならない)
rsync時にパスワードを聞かれないように
$ sudo visudo
root ALL=NOPASSWD: /usr/bin/rsync
を最後に追記。つぎにrsync-excludeとrsyncd.passwdを作成
$ sudo gedit /etc/rsync-exclude
rsyncで同期した時コピーしなくていいファイル
/.Trash-0/
/lost+found/
.recycle/ など
$ sudo gedit /etc/rsyncd.passwd
rootのパスワードのみを記入
このパスワードはサーバーのrsyncd.secretsに登録しているrootのパスワード
$ sudo chmod 600 /etc/rsyncd.passwd
ホームにRsyncActionを作る
$ gedit RsyncAction
sudo rsync -av -e “ssh -p SSHのポート -i /root/.ssh/id_rsa” –exclude-from=/etc/rsync-exclude –password-file=/etc/rsyncd.passwd rsync://root@サーバーのIP:/サーバーのrsyncd.confで指定したディレクトリ/ /同期されるディレクトリ
別のサーバーの設定も記入
ここで重要なのはrsync://root@サーバーのIP:/サーバーのrsyncd.confで指定したディレクトリ/ の最後の / これが無いと同期されるディレクトリの下に同期する。
rootになり、/etc/cron.dにプログラムを記入
$ su –
# echo “10 7,9,11,13,15,17,19,21 * * * ユーザー名 /home/ユーザー名/RsyncAction” >/etc/cron.d/rsync
# exit
これで7時から21時まで、毎時10分に同期される。

フジマル について

1947年生れ、東京電機大学二部電気通信工学科卒、最後はスリランカ航空で営業だったのですが2018年に㈱インパック・ジャパンに再就職。趣味:登山、スキー、車いじり、コンピューター
カテゴリー: Linux運用時のメモ パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください