回答:
ディレクトリrsyncを再帰的にdestディレクトリの正確なコピーにするために使用する場合src:
rsync -a src/ dest
rsyncmanページには、これがどのように機能するかについて説明します。
ソースの末尾のスラッシュは、宛先で追加のディレクトリレベルを作成することを避けます。
/ソースの末尾は、「名前でディレクトリをコピーする」のではなく、「このディレクトリの内容をコピーする」と考えることができます[...]
rsync私が今まで使ったどのバージョンでもありません。それが実際に発生している場合、ソースディレクトリ引数の末尾にあるスラッシュが欠落しています。
destは機能しないようsrcで、代わりににコピーさsrcれsrc/srcます。macOSでテスト済み。私は置き換えることができることを期待していたbar -> foo/とbar/、しかし中間の一時ディレクトリを使用する必要がありました。
destがへのシンボリックリンクであることがわかっている場合はsrc、単にrm dest上記のコマンドを実行する前に。rsyncはdest、のコンテンツをコピーする前に作成できるほどスマートですsrc。中間の一時ディレクトリは必要ありません。
古いファイルシステムと新しいファイルシステムの両方にマシンからアクセスできる場合は、rsyncではなくシンボリックリンクの使用を検討してください。使用しているrsyncコマンドでホストが指定されていない場合(または同じホストである場合)、これが当てはまります。同じホストで異なる名前の2つのディレクトリをミラー化しようとしています。データを複製しているため、rsyncを使用しないでください。rsyncを頻繁に実行して同期を維持する必要があります。
シンボリックリンクの使用は、2つのディレクトリ(異なる名前)をミラーリングする1回限りの修正であり、ほとんどスペースを必要としません。別のディレクトリを指すエイリアスディレクトリを作成するようなものです。
/ old / path / old_gitというディレクトリに古いgitがあり、コードリポジトリが/ new / path / new_gitに移動したとします
できるよ:
cd /old/path
rm -rf old_git (if you still have it there, get rid of it, or move it out of the way)
ln -s /new/path/new_git old_git
これにより、次のようなリンクが作成されます。
/ old / path / old_git-> / new / path / new_git
そのため、new_gitに入れられたものはすべて、データを複製することなく、また常に同期することなく、古い方法でもすぐに利用できます。
現在、代替ソリューションを見つけています。
を使用rysnc -r /origin/* /target/すると、元のディレクトリからターゲットディレクトリにすべてのコンテンツを同期できます。
rsync -r $(find /origin -maxdepth 1 -type f) /target/ です。@RayBurgemeestreが指摘したように、シェルグロブ拡張にはドットファイルは含まれません。
srcディレクトリの下にdestディレクトリが作成されます