アルファベット順の最初のファイルはrsyncでコピーされません

アルファベット順の最初のファイルはrsyncでコピーされません

次のコマンドを使用して、あるディレクトリの内容を別のディレクトリに完全に再帰的にコピーします。

rsync -avzhe /path1/to1/dir1/* /path2/to2/dir2/

期待どおりに動作しますが、ディレクトリまたはファイルの最初のファイル (アルファベット順) がコピーされません。他のすべてのファイルはコピーされます。なぜでしょうか?

私の OS は MacOS 10.14.6 です。

答え1

この-eオプションには引数が必要なので、最初のファイル名を使用します。リモートに接続するために使用するコマンドを設定するのに、リモートを使用していないのに、なぜ必要なのかわかりません-e。 を削除するだけです-e

答え2

/path1/to1/dir1というディレクトリの完全なコピーを作成するには/path2/to2/dir2

rsync -av /path2/to1/dir1/ /path2/to2/dir2

-zローカル コピーに圧縮 ( ) を使用する意味はありません。-eオプションは、ネットワーク接続を確立するために使用されるコマンドを指定します (これが、コマンドが最初のファイルのコピーに失敗し、rsyncオプションのオプション引数として使用される理由です-e)。したがって、このシナリオでは、これも削除する必要があります。

*また、ソース パスの末尾に を使用しないでください。通常は、非表示の名前dir1と一致しません。その下のすべての名前をグロブすると、リストが長くなりすぎて、コマンドがまったく実行できなくなる可能性があります。

ソース パスがスラッシュで終わっていることを確認してください。宛先パスの末尾にスラッシュがあっても違いはありません。ソース パスからスラッシュを削除すると、 のdir1内部がコピーされますdir2。ソース パスの末尾にスラッシュがあると、dir2のコピーが作成されますdir1

それ以外にも、-Hハードリンクが宛先で正しく確立されていることを確認する場合や、--sparseスパースである可能性があるファイル (事前に割り当てられたディスク イメージなど) をコピーしていることがわかっている場合に、使用することもできます。

使用--deleteするには消去ソース ファイル階層の一部ではない宛先からのエントリ。これは注意して使用してください。最初に-n( --dry-run) でテスト実行することをお勧めします。

関連情報