サーバーからローカルコンピュータにファイルを自動的に同期します。

サーバーからローカルコンピュータにファイルを自動的に同期します。

現在、私はcrontabバックアップ方法で毎週金曜日の午前3時に私のコンピュータでタスクを実行しています。これは、rsyncサーバーから外部ハードドライブにファイルを同期するコマンドを実行するbashスクリプトを実行します。このフラグは、rsyncコマンドからrsyncなどの--include-fromファイルのリストを取得するために使用されます。*.cpp *.h

残念ながら、私のハードドライブの空き容量が不足しているので、同じストレージスペースを持つ別のドライブに交換したいと思います。そのままrsyncを続けると、2番目のドライブが最初のドライブと同じでいっぱいになるため、何も得られません。

理想的には、外付けドライブを交換した日付よりも最新のファイルだけをrsyncしたいと思います--include-from(たとえば、今日のドライブを交換してから、インクルードファイルリストのファイルをrsyncしたいと思います。そして2015年3月27日更新)。これは最初のドライブの連続になります。

オンラインで見つけることができるすべては、find最初に日付よりも最新のファイルのリストを取得し、そのリストをrsyncfind仕える人?より良いオプションはありますか?rsyncファイルが最後に変更された日付を確認するフラグですか?

ありがとう

答え1

古いディスクを使用して最後のバックアップ後にタイムスタンプを作成し、そのタイムスタンプの後のファイルをバックアップします。findフラグを使用して--newerタイムスタンプより新しいファイルを一覧表示し、フラグを使用してコピーするファイルの--file-fromリストrsyncを指定します。

それだけです:

ステップ1:新しいドライブに変更する前に:touch /someplace/timestamp.txt

ステップ2:新しいディスクと交換します。

ステップ3:次のタスクを実行するようにcronjobスクリプトを変更します。

find BLAH BLAH BLAH -newer /someplace/timestamp.txt -type f -print0 >/tmp/list rsync -avP --inplace --file-from=/tmp/list --from0 desthost:/dest/place

/someplace/timestamp.txt ファイルを変更したり、触ったり、変更したりしないでください。

答え2

おそらく、サーバーへのSSHアクセス権がありますか?だから

  1. どちらか:サーバーにローカルマシンへのSSHアクセスを許可してから、次のものを使用します。ssh you@server 'find ... | xargs -0 -I {} rsync "{}" you@yourmachine:/media/dir'
  2. または、次のようにしてサーバーにファイルのfindリストを作成します。

しかし、私はこれが気に入らないと言わなければなりません。フルファイルを回復するには、まだ2つのバックアップディスク(古いディスクと新しいディスク)が必要で、回復が複雑になる可能性があります。この戦略を改善するためのいくつかの方法を考えてみることができますが、あなたにとって最も簡単な方法は新しい戦略を得ることです。大きい同じサイズの新しいディスクの代わりにディスク。当然、追加費用はそれほど大きくないでしょうか?

関連情報