1

シナリオ: ディレクトリをスキャンし、各ファイルを別のマシンに sftp する cron ジョブを作成する必要があります。

  • bash スクリプト: /home/user/sendFiles.sh
  • cron 間隔: 1 分
  • ディレクトリ: /home/user/myfiles
  • sftp 宛先: 10.10.10.123

cron ジョブを作成する

crontab -u user 1 * * * /home/user/sendFiles.sh

スクリプトを作成する

#!/bin/bash
/usr/bin/scp -r user@10.10.10.123:/home/user/myfiles .
#REMOVE FILES AFTER ALL HAVE BEEN SENT
rm -rf * 

問題: その cron タブが正しいかどうか、または cron タブを使用してディレクトリ全体を sftp する方法が正確にわからない

4

3 に答える 3

3

cronjobで実行される場合、ディレクトリを同期するためにそれを想定しています。

その場合、rdiff-backupを使用して増分バックアップを作成します。そうすれば、変化するものだけが転送されます。

このシステムは、データの転送に ssh を使用しますrdiff-backupが、プレーンの代わりに使用しますscp。このようにすることの主な利点は速度です。変更された部分のみを転送する方が高速です。

これは、rdiff-backup を使用して ssh 経由でコピーを行うコマンドです。

rdiff-backup /some/local-dir hostname.net::/whatever/remote-dir

それをcronジョブに追加し、rdiffバックアップを実行するユーザーがsshキーを持っていることを確認して、パスワードを必要としないようにします。

( ssh キーについて:ここで ssh キーについて読んでください: http://www.linuxproblem.org/art_9.html設定したら、通常の ssh を実行して、パスワードなしでログインできるかどうかを確認してください。)

このようなもの:

* * * * * rdiff-backup /some/local-dir hostname.net::/whatever/remote-dir

毎分コピーを行います。(あなたの例では、毎時の最初の11 * * * *分ごとに実行されます。つまり、毎分ではなく、毎時 1 回実行されます)

転送が完了していない場合、転送が巨大な場合に問題が発生する可能性があることに注意してください。しかし、それほど大きくないファイルの転送を行うことを望んでいると思います。または、ネットワーク速度が大きいこと。それ以外の場合は、代わりに を使用して、5 分ごとに転送を行うように変更し*/5 * * * *ます。

最後に、ここで rdiff-backup の詳細をお読みください: http://www.nongnu.org/rdiff-backup/examples.html

于 2013-08-27T04:15:34.223 に答える
1

rdiff-backup は良いオプションです。rsyncもあります

rsync -az user@10.10.10.123:/home/user/myfiles .

ファイルも削除していることに気付きましたが、これは単にファイルを再コピーしたくないからですか? rsync は更新されたファイルのみをコピーします。

双方向同期を行うユニゾンにも興味があるかもしれません

于 2013-08-28T10:50:59.410 に答える