SSH
2つのサーバー(httpmydocs)A
間にアクセス権があり、B
コマンドラインを使用して定期的にデータを転送しています。A
B
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
これはあなたの要件を満たしていますが、いくつかの問題があります。
- 月曜日の午前2時10分にコンピュータがダウンしても起動しません。
scp
毎回完全なコピーが作成されます。
ポイント2の場合、slmはすでに適切なソリューションを提供しています。
yourscript
ポイント1はcrontabを使用せずに入力することで解決できますが(slmも指摘したように)、毎週実行が指定された/etc/cron.weekly
時間(または順番に完了)に実行されるため、実行時間に対する制御力が失われます。ここで時間と曜日を変更できますが、これは実行中の他のスクリプトにも影響します。/etc/crontab
/etc/anacrontab
使用が/etc/cron.weekly
許可されていない場合は、方法を調整できます。私の答えはここにあります週に1回以上、特定の時間後に実行してください。