2017-06-15 1 views
1

Rsyncフィルタを使用して、ファイルの構造がターゲットの宛先にどのように表示されるかを操作しようとしています。他のSEの質問を読んでGoogleに相談しましたが、まだ問題があります。最初に/home/donglecow/を省略し、images/123/001/image.jpgRsync - ファイルパスの特定の部分を含める方法

/home/donglecow/images/123/001/image.jpg 
/home/donglecow/images/123/002/image.jpg 
/home/donglecow/images/456/001/image.jpg 
/home/donglecow/images/456/002/image.jpg 

のRsyncを実行している、私はこの正確な構造をコピーする:例として

は、私は、次のファイル構造を有しています。

この作業が完了したら、私はimagesの下のすべてを再帰的にコピーしたいと思います。私が抱えている問題は、最後のディレクトリとその内容をコピーするだけです。例えば、001/image.jpgです。

私が使用しているコマンドは、rsync -avvvrz --exclude='/home/donglecow/' --include='images/*' /home/donglecow/images/123/001/ /home/donglecow/rsyncDestinationです。

私は最終的に/home/donglecow/rsyncDestination/001/image.jpgとなりますが、/home/donglecow/rsyncDestination/images/123/001/image.jpgが必要です。

どこが間違っていますか?

答えて

1

--relative-R)引数を使用する必要があります。これにより、中間ディレクトリが作成されます。

編集:

したくない場合は "/ホーム/ donglecow /" あなたはそのディレクトリからrsyncを実行する必要があります。たとえば、:

cd /home/donglecow 
rsync -aRvvvrz --exclude='*/images/' --include='images/*' images/123/001/ /home/donglecow/rsyncDestination 
+0

私が '-R'を使うと、' --exclude'の設定にかかわらず常に '/ home/donglecow /'を取り戻します。 'rsync -aRvvvrz -exclude = '*/images /' --include = 'images/*'/home/donglecow/images/123/001// home/donglecow/rsyncDestination' – Donglecow

+1

@Donglecowここに私の改訂されたコマンドがあります。これは、/ home/donglecowからrsyncを実行し、相対パスをソースとして使用する必要があることを示しています。私は例で私の答えを更新しました。 –

+0

パーフェクト、それは働いて、ありがとう!これはスクリプトから実行されるので、将来の参照のために知っておくとよいでしょう。 – Donglecow

関連する問題