web-dev-qa-db-ja.com

rsyncまたはcpを使用するときに、ファイルとディレクトリのmtimeを維持するにはどうすればよいですか?バックアップ/増分バックアップで使用する場合

私は新しいNASボックスを持っており、多数のバックアップソリューションを調べた後、PuTTYを介して手動で実行すると最適に機能することがわかりました。

ルートとしてPuTTYを介してボックスにログインした後、最初にディスク全体をUSB HDDにコピーする必要があります(週に1回)。私は使用しています:

cp -Rp /data/Backup /media/USB_HDD_3/Backup

代わりにrysnc -aを試してみましたが、ファイル自体はmtimeを保持しますが、ディレクトリは保持しないという同様の結果が得られます。

その後、毎日増分バックアップを実行します。私が構築しているもの:

find . -mtime -2 -exec cp -Rp {} /media/USB_FLASH_1/ \;

繰り返しになりますが、cp - Rprsync -aに置き換えてみましたが無駄になりました。 mtimeも調べていないように、バックアップ全体が転送されることになります。

私はLinuxとUnixにかなり慣れていないので、これのほとんどはネット上で見つけたものから適応し、それらを一緒にスロットに入れようとしました。これがおそらく機能しない理由です。

1
user62094

rsync -aは、次の場合に機能するはずです。

rsync -av /data/Backup /media/USB_HDD_3

ディレクトリのタイムスタンプが保持されていない場合、これはおそらくrsyncバージョンのバグです。別の方法として、GNU cpio

find . -mtime -2 -print0 | cpio -0mdp /media/USB_FLASH_1

またはより移植性があります(改行付きのファイル名は処理しません):

find . -mtime -2 | cpio -mdp /media/USB_FLASH_1

BusyBoxビルドには、さまざまなツールの簡略化されたバージョンが含まれていることが多いことに注意してください。完全に構築された場合でも、POSIXに完全には準拠していません。また、cpioは実際にはPOSIX標準に含まれていません。お使いのバージョンのBusyBoxは、-pオプションをサポートせずにビルドされている可能性があります。これらのオプションを有効にしてcpioを使用する必要があります。

上記をGNU cpioでテストしました。古い標準が何であったかへのリンクが見つかりませんが、おそらくそれに準拠するものはすべてこれらのオプションをサポートします-0を除く。

2
Graeme

rsyncには、すべてのファイルの転送を回避するための更新オプションが必要です。man rsyncマニュアルページを提供し、オプションの下に、

    -u, --update                skip files that are newer on the receiver
        --inplace               update destination files in-place

それが何をしているのかを理解するのを助けるために、冗長モードに-vオプションを使用することができます。

-v、-verboseこのオプションは、転送中に提供される情報の量を増やします。デフォルトでは、rsyncはサイレントに動作します。単一の-vは、転送されているファイルに関する情報と、最後に簡単な要約を提供します。 2つの-vオプションを使用すると、スキップされているファイルに関する情報と、最後に少し多くの情報が提供されます。 3つ以上の-vオプションは、rsyncをデバッグする場合にのみ使用する必要があります。

  Note that the names of the transferred files that are output are done using
  a default --out-format of "%n%L", which tells you just the name of the file
  and, if the item is a link, where it points.  At the  single  -v  level  of
  verbosity,  this  does not mention when a file gets its attributes changed.
  If you ask for an itemized  list  of  changed  attributes  (either  --item‐
  ize-changes or adding "%i" to the --out-format setting), the output (on the
  client) increases to mention all items that are changed in  any  way.   See
  the --out-format option for more details.
1
X Tian