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

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

さようなら行ってください!

私はチリで働いています。問題は、ここの接続速度が非常に遅く、各ステーションがパッケージをインターネットに直接更新するなどの操作が不可能であることです。だから私は夜だけrsyncを介してのみ更新したいローカルストレージがあります。

rsyncには何の問題もなく、使い方を知っています。私はcronjobと同様の内容に比較的初めて接しました。

簡単に言えば、私がすべきことは毎晩リポジトリを更新することです。毎日午後7時に始まり、午前7時に終わるとしましょう。

どうすればいいですか?

よろしくお願いします。

暖かい安否の挨拶。

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

ベストアンサー1

cronを使用する方法は2つあります。これは/etc/cron.d/repo-sync次の形式でファイルを生成することです。

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

たとえば、毎日19:00にsrcからdestとしてrsyncを実行するには、次のようにします。

0 19 * * * root rsync -a src dest

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

0 19 * * * rsync -a src dest

個人的には、私はシステム/ルート操作のためにcron.dファイルを生成することを好みますが、どちらの方法も同じ結果を生成します。

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

0 7 * * * root killall rsync

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

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

クローンジョブ設定の詳細をご覧ください。ここまたはここ

おすすめ記事