web-dev-qa-db-ja.com

Linuxでファイル保存ディレクトリパスをコピーするにはどうすればよいですか?

私はEclipseプロジェクトと ".project"ファイルを持っています。ディレクトリ構造は 'myProject/.project'のようになります。これらの「.project」ファイルを別のディレクトリにコピーしたいのですが、囲んでいるディレクトリ名は保持したいです。

a/myProject/.project」があるとしましょう。「myProject/.project」を「b」にコピーしたいので、「b/myProject/.project」ですが、「b/myProject 'は存在しません。私が試してみると:

 cp -r ./myProject/.project ../b

「myProject」ディレクトリなしで、「。project」ファイルのみをコピーします。お知らせ下さい。

90
dhblah

必要なスイッチは--parents、例:

jim@prometheus:~$ cp --parents test/1/.moo test2/
jim@prometheus:~$ ls -la test2/
total 42
drwxr-xr-x   3 jim jim    72 2010-09-14 09:32 .
drwxr-xr-x 356 jim jim 43136 2010-09-14 09:32 ..
drwxr-xr-x   3 jim jim    72 2010-09-14 09:32 test
jim@prometheus:~$ ls -la test2/test/1/.moo
-rw-r--r-- 1 jim jim 0 2010-09-14 09:32 test2/test/1/.moo
161
James Yale

rsync -Rを使用することもできます。これは、cp --parentsが利用できないOSXで機能します。

https://stackoverflow.com/a/13855290/59894

20
Alec

tarは次のように使用します。

mkdir b; tar cpf - myProject/ | tar xpf - -C b/

(テストされていません。最初に予行演習を行うか、モックアップシナリオで試してください。)

9
lorenzog

最初の使用mkdir -p再帰的な親パスを作成して宛先フォルダーを作成します。次に、コンテンツを宛先フォルダーにコピーします。

mkdir -p b/myProject/.project
cp -r a/myProject/.project/file b/myProject/.project
5
Weimin
cp -P a/myProject/.project b

見る man cp 詳細については。

3
Maxfer

Cpioをfindと組み合わせて使用​​しています。 説明はこちら

ユースケースの例:

find /a/myProject/.project/ -type f | cpio -p -dumv /b/.

このコマンドは、/a/myProject/.project/内のすべてのファイルを検索し、パスを保持しながら、その中に含まれているファイルをコピーします。

3
Alex Avlonitis

--parentsに加えて、ほとんどの内部ディレクトリのコピーを省略しないようにするために、-rオプションを追加することも必要です。

$ cp --parents test/1/.moo test2/
cp: omitting directory ‘test/1/.moo’

だから私のために働くコマンドは

$ cp --parents -r test/1/.moo test2/
2
cml.co

cp --parentsにバグがあるようです。 --parents--preserve=allとともに使用すると、SOMEの宛先ディレクトリの日付と時刻の属性が保持されませんでした。

次のリンクは、これがバグであることを確認しているようです: bug#8767:cp:--preserve = allは、-parentが使用されている場合、親に対して機能しません

そのため、--parents--preserve=allなどの-pを使用すると、保持されている属性に依存できないように見えます。

0
chandra67