データ転送を行っていますが、古いファイル システムは、現在別のパスにあるディレクトリに大きく依存しています。これは、オンラインでコードを保存する git ディレクトリです。これを移動したり、名前を変更したりする権限はありません。

そこで私ができることは、このディレクトリを同じ古いパスに rsync することです。ただし、ディレクトリ名も変更されました。

ディレクトリを別の名前のターゲット ディレクトリに rsync する簡単な方法はありますか?

答え1

ディレクトリの正確なコピーrsyncを再帰的に作成する場合:destsrc

rsync -a src/ dest

manrsyncページではこれがどのように動作するかが説明されています:

ソースの末尾にスラッシュを付けると、宛先に追加のディレクトリ レベルが作成されなくなります。ソースの末尾のスラッシュは、/「ディレクトリを名前でコピーする」という意味ではなく、「このディレクトリの内容をコピーする」という意味であると考えることができます [...]

答え2

答え3

古いファイルシステムと新しいファイルシステムの両方がマシンからアクセスできる場合は、rsync ではなくシンボリック リンクの使用を検討してください。使用している rsync コマンドがホストを指定していない場合 (またはホストが同じである場合) は、これが該当します。同じホスト上の異なる名前の 2 つのディレクトリをミラーリングしようとしています。この目的には rsync を使用しないでください。データを複製するため、同期を保つために rsync を頻繁に実行する必要があります。

シンボリック リンクの使用は、2 つのディレクトリ (異なる名前) をミラーリングする 1 回限りの修正であり、ほとんどスペースを必要としません。これは、別のディレクトリを指すエイリアス ディレクトリを作成するようなものです。

古いgitが/old/path/old_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 に入れられたものはすべて、データを重複させたり、常に同期したりすることなく、従来の方法でも即座に利用できるようになります。

答え4

今、別の解決策を見つけました。

を使用するとrysnc -r /origin/* /target/、元のディレクトリからターゲット ディレクトリにすべてのコンテンツを同期できます。

関連情報