競合する2つのファイルのうち、後で使用する2つのディレクトリをミラーリングするためにrsyncを使用できますか? [コピー]

競合する2つのファイルのうち、後で使用する2つのディレクトリをミラーリングするためにrsyncを使用できますか? [コピー]

私は次のコマンドでrsyncを使用して「プライマリ」ハードドライブを正常にバックアップしてきました。

rsync -aivr --delete --progress /src/my-files/ /dest/my-files

しかし、私は外付けドライブを持ち歩いてそこにあるファイルを修正することもできます。上記のコマンドはこれらの変更を消去します。また、維持したい両方のドライブを変更した可能性があるため、srcとdestを交換することはできません。

私が望む行動はこれです。

# rsync walks the src drive
# if a file is present in src that is not present in dest, then copy the file to dest
# if a file is present both in src and in dest, then compare modification times
#     and overwrite using the later one.
# if a file is present on dest but is not on src, then copy the file from dest to src.

上記の動作を得るためにrsyncを使用できますか?

答え1

rsync一方向の仕事です。あなたはできます努力するこれを使用して双方向レプリケーションを実装しますが、脆弱でエラーが発生しやすくなります。ただし、スイッチを使用してrsyncターゲットから最新のファイルが削除されるのを防ぎます--update

   -u, --update
          This forces rsync to skip any files which exist on the destination and have a modified time that is newer  than  the  source  file.   (If  an
          existing destination file has a modify time equal to the source file's, it will be updated if the sizes are different.)

          In  the  current implementation of --update, a difference of file format between the sender and receiver is always considered to be important
          enough for an update, no matter what date is on the objects.  In other words, if the source has a directory or a symlink where  the  destina-
          tion has a file, the transfer would occur regardless of the timestamps. 

関連情報