0

さて、SoF、これを説明するのは少し難しいですが、私は最善を尽くします。

私は2つの同じドライブを持っています。ソースを「S:」、宛先を「D:」と呼びましょう。

S:すべてのファイル(画像、音楽、ビデオ、ドキュメントなど)を保持するドライブであり、D:毎週日曜日の夜に(手動で)バックアップするバックアップHDです。

私がやりたいのは、いくつかのルールを使用して、S:をD:にバックアップすることです。

私が言ったように、私は週に一度バックアップを行います。これは、1週間を通して、ファイルが追加、削除され、フォルダ間を移動することを意味します。

  1. 新しいファイル、または変更されたファイルのみをコピーします(ファイルのメタダをチェックする必要があります)

  2. バックアップの最後に、D:はS:と同じになる必要があります。

つまり、S:のフォルダ「A」からフォルダ「B」にファイルを移動した場合、ファイルはフォルダ「A」にないことがわかり、そのフォルダを削除して、そのフォルダを次のようにする必要があります。 S :。

ステップ2はおそらく十分に説明されていませんでした。、だからここにもっと良い説明があります。これは、rsyncがそれを実行できない場合に私が物事を実行することを計画している方法です。

Pythonでは、次のことを(順番に)実行するスクリプトを作成します。

  1. D:をS:と比較します-スクリプトは最初にD:をトラバースします。ディレクトリに入るたびに、S:内の同じディレクトリを調べます。次に、ファイルを調べます。ファイルがD:にあるが、S:にはない場合は、ファイルがS:で削除、名前変更、または移動されたことを意味します。したがって、そのファイルをDから削除します:(すべてのフォルダーに対してこのプロセスを繰り返します)

  2. D:がまったく同じファイル(上記の手順で削除された場合はそれ以下)を持っているので、コピーを開始します。まず、S:の現在のファイルがD:に存在するかどうかを確認し、存在しない場合はコピーします。含まれている場合は、メタデータを確認してください。変更されている場合は、コピーして上書きします。

これをうまく説明しなかった場合は申し訳ありませんが、午前4時15分です。率直に言って、すべてのD:を手動で削除し、S:=/からファイルをコピーすることにうんざりしています。

4

2 に答える 2

2

これは、LinuxマシンをUSBドライブにバックアップするために作成したスクリプトです。

#!/bin/sh

rsync -a \
  --progress \
  --hard-links \
  --whole-file \
  --delete \
  --delete-after \
  --delete-excluded \
  --stats \
  --filter='- *.log' \
  --filter='- /dev' \
  --filter='- /boot' \
  --filter='- /media/' \
  --filter='- /mnt' \
  --filter='- /net' \
  --filter='- /proc' \
  --filter='- /tmp/' \
  --filter='- /var/log/' \
  / /media/disk/middle-earth

--filter行は、同期したくないファイル/サブディレクトリを除外します。

これを出発点として使用して、独自のクラフトを作成できます。

于 2009-07-13T14:23:36.707 に答える
1

to--archiveと一緒にスイッチを探していると思います。つまり、あなたの説明が「D:のすべてを最初に削除せずに、バックアップを実行した後、D:にS:と同じ内容を持たせたい」という意味であると仮定するのが正しい場合です。--deletersync

また、ドライブ文字にWindows表記を使用しているが、実際にはWindowsを使用していないことも前提としています。

于 2009-07-13T08:24:00.830 に答える