良い一日です!
私はチリで働いています。ここでの接続は非常に遅く、すべてのステーションがパッケージをインターネットに直接更新するなどのタスクは不可能です。そのため、夜間にのみrsyncを介して更新したいローカルリポジトリがあります。
rsyncに問題はありません、使用方法を知っています。私が少し新しいのは、cronjobや同様のものなどの分野です。
簡単に言えば、私がする必要があるのは、毎晩リポジトリを更新することです。毎日午後7時に開始し、午前7時に停止するとします。
どうすればそれができますか?
よろしくお願いします。
よろしくお願いします。
PD:Ubuntu16.04を使用しています。
承認された回答:
/etc/cron.d/repo-sync
にファイルを作成することにより、cronを使用する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に停止する必要はありません。本当に7:00にコマンドを停止する必要がある場合は、特定の時間に既存のプロセスを強制終了する別のcronジョブを発行できます。
0 7 * * * root killall rsync
残念ながら、これによりすべてのrsyncコマンドが強制終了されます。rsyncを同時に実行しようとすると副作用が発生する可能性があるため、この方法はお勧めしません。
pidをファイルに書き込むスクリプト内にrsyncコマンドを配置し、killコマンドでそのpidを使用してこれを軽減することでさらに先に進むことができますが、これは実際に必要な場合よりも複雑になる可能性があります。
cronジョブの設定について詳しくは、こちらまたはこちらをご覧ください。
関連:ハードディスク全体にエラーや不良セクタがないかどうかを確認するにはどうすればよいですか?