Linuxでcpを使用してディレクトリをコピーし、特定のサブディレクトリを無視する方法


9

ハードディスクの問題により、パーティションをあるハードディスクから別のハードディスクに移動しようとしています。これを行うには、http://www.ibm.com/developerworks/library/l-partplan.htmlの記事に従っています。コピーの部分では、特定のサブディレクトリを無視したいと思います。コピーするときに、所有者グループとタイムスタンプを保持する必要があることを念頭に置いて、それを実現するにはどうすればよいですか。特定のサブディレクトリを無視しないと、約700 GBのデータがコピーされる必要があります。

回答:


11

rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to

--del同様に使用したい(またはしたくない)かもしれません。マニュアルページを確認してください。


はいそれはトリックをしました。この作品..
Pロイ

2

通常、私はcpio次のように使用します、

cd source_dir; find . -depth | cpio -pdmv dest_dir

そして、これはパイプラインなので、途中に「減算フィルター」を置くことができます。

cd sourcedir; find . -depth | grep -v exclude_dir | cpio -pdmv dest_dir

または、これをいくつかのステップに分割できます。

cd source_dir; find . -depth > files.lst
gedit files.lst  # (take out the offending directory and files and save back to files.lst)
cpio -pdmv dest_dir < files.lst

もちろん、最初にもっと小さいものでこれをテストしますが、あなたはそのアイデアを理解します。



0

mv大きなサブディレクトリを一時的に他の場所に移動()して、コピーを実行してから、サブディレクトリを復元できますか?cpこれを行うための直接オプションが表示されません。


私もcpをチェックしましたが、cpの使用を無視する方法はありません。そのサブディレクトリとmvには550 GBのデータがあり、数時間かかる場合があります。
P Roy

私はmvは比較的低コストの操作であると想定しました-データをディスク上で物理的に移動するのではなく、データへの参照を更新します。少なくとも、私は常にWindowsでの移動がコピーよりもはるかに速いことに気付いていました。Linuxファイルシステムはまったく異なる動作をする可能性があります。
Ash

同じハードディスクへのmvは高速です。しかし、1つのハードリスクでmvを実行すると、cpと同じ時間がかかると思います。
P Roy

同じハードディスクのどこかに移動して邪魔にならないようにし、残りをリモートディスクにコピーしてから、大きなファイルを元に戻しました。/からディスク全体をコピーする場合を除きます。
Ash

0

むしろ醜い解決策ですが...ディレクトリ内のすべてを非再帰的にcpし、個々のディレクトリを再帰的にコピーしないのはなぜですか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.