web-dev-qa-db-ja.com

rsyncコマンドをスケジュールする方法は?

良い一日!

私はチリから働いています。ここでの接続は非常に遅く、すべてのステーションがパッケージをインターネットに直接更新するようなタスクは不可能です。だから私は夜間にのみrsync経由で更新したいローカルリポジトリを持っています。

私はrsyncに問題はありません、それを使用する方法を知っています。私が少し新しいのは、cronjobsや同様のもののような領域です。

要するに、毎晩リポジトリを更新する必要があります。毎日7:00に開始するとしますPM= 7:00 AMに停止します。

どうやってやるの?

前もって感謝します。

敬具。

PD:私はUbuntu 16.04を使用しています。

1
Alain

Cronを使用するには、/etc/cron.d/repo-syncに次の形式のファイルを作成する2つの方法があります。

<minute> <hour> <day_of_month> <month> <day_of_week> <user> <command>

たとえば、毎日19:00にsrcからdestまでrsyncを実行するには、次のコマンドを使用できます。

0 19 * * * root rsync -a src dest

または、上記のような行を除いたcrontab -e(コマンドを実行するユーザーとして)を実行してcrontabを作成することもできます。

0 19 * * * rsync -a src dest

個人的には、システム/ルートタスク用にcron.dファイルを作成することを好みますが、どちらの方法でも同じ結果になります。

これで、指定した時間にコマンドが1回実行されます。コマンドの実行が完了すると停止します。そのため、rsyncがそれまでに完了するはずなので、7:00に停止するコマンドを指定する必要はありません。本当に7:00にコマンドを停止する必要がある場合は、特定の時間に既存のプロセスを単に終了する別のcronジョブを発行できます。

0 7 * * * root killall rsync

残念ながら、これによりすべてのrsyncコマンドが強制終了されます。同時にrsyncを実行しようとすると、何か他の副作用が生じる可能性があるため、この方法はお勧めしません。

ファイルにpidを書き込むスクリプト内にrsyncコマンドを配置し、そのpidをkillコマンドで使用してこれを軽減することでさらに進めることができますが、これは実際に必要な場合よりも複雑になる可能性があります。

Cronジョブの設定について詳しくは、 ここ または ここ を参照してください。

2
Michael Daffin