さようなら行ってください!
私はチリで働いています。問題は、ここの接続速度が非常に遅く、各ステーションがパッケージをインターネットに直接更新するなどの操作が不可能であることです。だから私は夜だけ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 を使用すると、この問題をさらに軽減できますが、これは実際に必要なものよりも複雑になる可能性があります。