ディレクトリ構造をリモートLinuxサーバーに複製するにはどうすればよいですか?


2

特定のサブディレクトリで開始する1つのLinuxサーバーから別のリモートサーバーに複雑なディレクトリ構造を複製します。

ファイルの内容は必要ありません。複製するサーバーには新しいマシンにコピーしてはならない大量のデータが含まれているため、構造、所有者、アクセス許可を保持するだけです。

これは、フォルダ構造をtarし、リモートマシン上でuntarすることで、どういうわけか実行できると思います。または、rsyncを使用して、データを送信せずにコピーします。または、おそらくfindを使用してシェルスクリプトを作成します。

誰かがこれを達成するワンライナーを手元に持っているなら、私はそれを感謝します。

回答:


2

あなたは組み合わせることができますfindし、cpioこのように現在の作業ディレクトリからサブディレクトリのリストを作成します:

find . -type d -print | cpio -oO dirs.cpio

リモートマシンでそのディレクトリ階層を再構築するには、dirs.cpioファイルを目的の場所にコピーして実行します。

cpio -iI dirs.cpio

両方の答えは素晴らしかったが、cpioについて教えてくれたので、これに対する最善の答えを与えた。
スチュアートウッドワード

1

1つの解決策は

find . -type d > dirs

ディレクトリを見つけるには、次の-Tオプションでそのファイルを使用しますtar

tar cpzT dirs -f dest_file.tar.gz

圧縮されたアーカイブ(z)を作成し、pリストされたファイル(T dirs)のみをアーカイブすることにより許可()を保持します。ファイルを転送し、解凍します

tar xpzf dest_file.tar.gz

完了です。


1

rsyncソースパスの下のディレクトリのみを宛先ディレクトリに再帰的にコピーするために使用します。

rsync --archive --verbose --filter="+ */" --filter="- *" /path/to/src/ /path/to/dest/
rsync --archive --verbose --filter="+ */" --filter="- *" /path/to/apache/logs/ user@domain:/path/to/apache/logs/

の古いバージョンでルールの代わりにオプション--includeを使用します:--exclude--filterrsync

rsync --archive --verbose --include="*/" --exclude="- *" /path/to/src/ /path/to/dest/
rsync --archive --verbose --include="*/" --exclude="*" /path/to/apache/logs/ user@domain:/path/to/apache/logs/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.