ディレクトリを別の名前の新しいディレクトリに再同期する方法は?


49

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

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

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

回答:


83

ディレクトリrsyncを再帰的にdestディレクトリの正確なコピーにするために使用する場合src

rsync -a src/ dest

rsyncmanページには、これがどのように機能するかについて説明します。

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


3
これにより、srcディレクトリの下にdestディレクトリが作成されます
Zen

7
@Zenは、rsync私が今まで使ったどのバージョンでもありません。それが実際に発生している場合、ソースディレクトリ引数の末尾にあるスラッシュが欠落しています。
エイドリアン

3
その卑劣な末尾のスラッシュは
重要

残念ながら、これはにある場合destは機能しないようsrcで、代わりににコピーさsrcsrc/srcます。macOSでテスト済み。私は置き換えることができることを期待していたbar -> foo/bar/、しかし中間の一時ディレクトリを使用する必要がありました。
user5359531

@ user5359531これdestがへのシンボリックリンクであることがわかっている場合はsrc、単にrm dest上記のコマンドを実行する前に。rsyncdest、のコンテンツをコピーする前に作成できるほどスマートですsrc。中間の一時ディレクトリは必要ありません。
エイドリアン

1

古いファイルシステムと新しいファイルシステムの両方にマシンからアクセスできる場合は、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に入れられたものはすべて、データを複製することなく、また常に同期することなく、古い方法でもすぐに利用できます。


1
rm -rf old_gitコマンドに注意してください。これにより、old_gitリポジトリ全体が削除されます。あなたの問題を正しく理解していないなら、これは悪いことかもしれません。
jrel

0

現在、代替ソリューションを見つけています。

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


8
これらはアスタリスクと一致しないため、これにはドット(.foo)ファイルは含まれないと考えています
レイBurgemeestre

シェルグロブ拡張に依存します。技術的には、そこにあるすべてのファイルを引数としてrsyncに渡します。実行とほぼ同じrsync -r $(find /origin -maxdepth 1 -type f) /target/ です。@RayBurgemeestreが指摘したように、シェルグロブ拡張にはドットファイルは含まれません。
フロリアンカステラーヌ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.