サーバー間のデータ転送

サーバー間のデータ転送

SSH2つのサーバー(httpmydocs)A間にアクセス権があり、Bコマンドラインを使用して定期的にデータを転送しています。AB

scp -rpC /var/www/httpmydocs/* mega_me@mega_debian.com:/var/www/httpmydocs 

今週、デスクトップコンピュータからサーバーにデータをバックアップしたいと思いますA。このコマンドラインを変更して、特定の日時に自動的に実行され、デスクトップコンピュータからサーバーにデータをバックアップするスクリプトになるのにどのように役立ちますか?A

答え1

scp私はこの操作を使用しません。rsyncたぶん。rdiff-backup

$ rsync -avz /var/www/httpmydocs/ \
    mega_me@mega_debian.com:/var/www/httpmydocs/.

このコマンドはこのコマンドと同様のバックアップを実行しますscpが、時間の経過とともに変更された増分ファイルまたは新しいファイルのみを転送し、コピーされたファイルはスキップされます。

目的に応じて、この--deleteスイッチを使用してローカルに存在しなくなったファイルをリモートバックアップから削除できます。

スケジュールされたタスクにするためにcronjobに入れました。 system-y型ディレクトリであることを考慮すると、頻度に応じて、/etc/cron.dailyまたは以下にcrontabエントリを追加します。/etc/cron.weekly上記のrsyncコマンドをシェルスクリプトに入れて実行可能にし、任意のディレクトリに配置すると、これら2つの頻度のいずれかで発生します。

引用する

答え2

特定の日時が必要な場合は、cronジョブを使用する必要があります。これは通常コマンドラインで実行されるため、必ずしもシステム操作である必要はありませんが、通常のクローン操作である可能性があります。crontab -e編集するファイルが提供され、下部に追加できます。

10 2 * * 1 test -x /path/to/yourscript || /path/to/yourscript

最初のフィールドは分、2番目のフィールドは時間、5番目のフィールドは曜日です。

ファイルは/path/to/yourscript実行可能()でchmod +xなければならず、次のようになります。

#!/bin/bash
scp -rpC /var/www/httpmydocs/* mega_me@mega_debian.com:/var/www/httpmydocs

これはあなたの要件を満たしていますが、いくつかの問題があります。

  1. 月曜日の午前2時10分にコンピュータがダウンしても起動しません。
  2. scp毎回完全なコピーが作成されます。

ポイント2の場合、slmはすでに適切なソリューションを提供しています。

yourscriptポイント1はcrontabを使用せずに入力することで解決できますが(slmも指摘したように)、毎週実行が指定された/etc/cron.weekly時間(または順番に完了)に実行されるため、実行時間に対する制御力が失われます。ここで時間と曜日を変更できますが、これは実行中の他のスクリプトにも影響します。/etc/crontab/etc/anacrontab

使用が/etc/cron.weekly許可されていない場合は、方法を調整できます。私の答えはここにあります週に1回以上、特定の時間後に実行してください。

関連情報