1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

cronを用いたrsyncの実行

Last updated at Posted at 2022-06-24

はじめに

例えばバックアップをしたいとき,ファイルを定期的に送信するため,cronとrsyncを用いることがあります.今回は,バックアップを目標とした手順を述べます.

環境

今回はESXiでVMを作成しています.
VMの構成は以下の通りです.

VM 構成情報 (ファイルサーバ)

・OS Ubuntu-20.04.2
・vCPU 2 コア
・RAM 8GB
・HDD 220GB

VM 構成情報 (バックアップサーバ)

・OS Ubuntu-20.04.2
・vCPU 2 コア
・RAM 8GB
・HDD 120GB

ファイルサーバから,バックアップサーバのbackupというディレクトリにファイルを送信します.

cron

cronは,プログラムを自動実行するためのデーモンです.
人によってこの設定場所は違いますが,今回は/etc/cron.dで作成した場合を想定します.

バックアップ用のシェルスクリプト作成

今回は,バックアップをすることを想定したシェルスクリプトを作成します.

backup.sh
expect -c "
  set timeout 3
  spawn rsync -av [file-name] [user-name]@[host-name]:~/backup
  expect \"password:\"
  send -- \"hogehoge\r\"
  expect eof
  exit
"

rsyncはsshを用いるため,パスワードを聞かれます.自動でパスワードを入力するため,expectを用います.

sudo apt install expect

最後にinteractを用いるサイトがありますが,これは標準入出力をシェルに戻すためのコマンドなので,cronでは実行できず処理が止まります.これによりファイルを送信できないことがあるため気を付けましょう.

次に,backup.shに実行権限を付与します.

$ sudo chmod +x backup.sh

cronの実行場所

cronの設定場所には

・/var/spool/cron/crontabs/[USER]
・/etc/crontab
・/etc/cron.hourly
・/etc/cron.daily
・/etc/cron.monthly
・/etc/cron.weekly
・/etc/cron.d

があります[1].

また,ネットで検索すると

・crontab -eでvar/spool/cron/crontabs/[USER]に書き込む方法
・/etc/cron.d内にファイルを作成する方法
・/etc/cron.(hourly|daily|weekly|monthly)/内に設定する方法
・/etc/crontabで設定する方法

があります[2].

個人的には,crontab -rで間違えて設定を削除しないよう,/etc/cron.d内に設定するのがよさそうです.cron.dは本来インストールされたパッケージ専用のディレクトリらしいですが,プロジェクトや担当者毎にファイルを分けられます.

cronの設定

cron.d内にcron実行用のファイルを作成します.
エディタはお好きなものを使ってください.今回はvimを使用します.

$ cd /etc/cron.d
$ sudo vim cron_test

cron_test内に実行したいファイルを追記します.

*/1 *   * * *   user    /home/user/backup.sh

今回はテストを兼ねて,一分間隔で送信する設定にしました.

送信先(今回はバックアップサーバのbackupディレクトリ)にファイルがあれば成功です.

$ watch ls backup

と入力すると,backupディレクトリにファイルが送信されるかを毎回lsで確認しなくてよいです.

ファイルが送信されない場合

$ cat /var/log/syslog | grep cron -i

で,cronに関するログを見ることができます.

(No MTA installed, discarding output)

と表示されている場合,

$ sudo apt install postfix
$ sudo apt install mailutils

でインストールしてください.
ログを確認できるようになります.
postfixのインストール時は,今回local onlyを選択しました.

また,

$ mail

でもログを確認できるようになります.

参考文献

[1]penpenメモ,”色々なcronの場所と違い【Ubuntu 18.04.4 LTS】”,https://penpen-dev.com/blog/cron/
[2]とーますメモ,”【cron】改めてcronの設定方法について勉強し直してみた”,https://thoames.hatenadiary.jp/entry/2018/12/30/101021

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?