rsync --backup-dir は変更されたデータを取得しません - 代わりに元のバックアップ場所に移動します

rsync --backup-dir は変更されたデータを取得しません - 代わりに元のバックアップ場所に移動します

なぜこれが期待どおりに動作しないのかわかりません。/scripts/source の完全な rsync バックアップを /scripts/full に持っており、差分バックアップを /scripts/diff に入れたいのですが、/scripts/source の元の場所にファイルが追加されてから差分バックアップが実行されると、ファイルは /scripts/diff ではなく /scripts/full にバックアップされます。以下は私が作成したテスト スクリプトです。

DIFF='/scripts/diff'
SOURCE='/scripts/source'
FULL='/scripts/full'
CTIME=$(date +%T)
TESTFILE=newfile$CTIME
rm -r $DIFF/*
rm $SOURCE/newfile*
rm $FULL/newfile*
echo "I'm in a file " >  $SOURCE/$TESTFILE
rsync \
-a \
-A \
-X \
-h \
-H \
-b \
--backup-dir=$DIFF \
$SOURCE/* \
$FULL
echo "----------------------------------------------------------------------"
echo "Our test file is: $TESTFILE"
echo "----------------------------------------------------------------------"
echo "Source Files in $SOURCE - we should see our one test file"
ls $SOURCE
echo "----------------------------------------------------------------------"
echo "Full backup in past - We should not see any test files here"
ls $FULL
echo "----------------------------------------------------------------------"
echo "Diff files in $DIFF  - we should see the same test file here as"
echo "was in the $SOURCE dir"
ls $DIFF

スクリプトでは、テスト ファイルはソース ディレクトリにドロップされます。rsync はそれを完全なディレクトリにコピーするべきではありません (しかし、コピーします)。それは diff ディレクトリにコピーされる必要があります (そうではありません)。

マニュアル ページを再度読み直したり、Web を検索したりしても役に立ちませんでした。私の環境に合わせて調整した単純な差分バックアップ スキームは、まったく機能しません。ここで何を間違っているのでしょうか。ときどきフル バックアップを実行したいのです。その後、変更されたファイルのみを含む diff を実行したいのです (フル バックアップは変更されません)。アイデアとしては、参照するフル バックアップがあり、変更されたファイルは diff で見つかるというものです。私のスクリプトはこれよりも複雑ですが、問題を切り分けるために簡略化しました。ありがとうございます。-Jeff

答え1

オプションが-b --backup-dir期待通りに動作しないようです。代わりに
別のオプションを使用してみてください--link-dest。コマンドラインは次のようになります。

rsync -aAXhH --link-dest=/scripts/full/  /scripts/source/  /scripts/diff/

どういう意味ですか?(新しいファイル)と(空のファイル)を比較するよう
に指示しています。rsync/scripts/source//scripts/diff/そして 追加ディレクトリ/scripts/full/(バックアップのディレクトリ)にあります。

ノート:

  • 通常は変数を二重引用符で保護する方が良いです""TESTFILE="newfile${CTIME}"TESTFILE=newfile$CTIME
  • 男性からrsync:

    --link-dest=DIR         hardlink to files in DIR when unchanged
    
  • オプション--backup-dir(...) は、宛先ディレクトリ内のファイルを上書きするのではなく、通常は異なる拡張子または別のディレクトリでファイルのコピーを実行するために使用されます。

    -b, --backup                make backups (see --suffix & --backup-dir)
        --backup-dir=DIR        make backups into hierarchy based in DIR
        --suffix=SUFFIX         backup suffix (default ~ w/o --backup-dir)
    
  • そうなるべきだ曖昧さが少ない...

関連情報