GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリを除外する rsync 除外オプションを取得できません

mkdir -p test/a/b/c/d/e
mkdir -p test/dest
rsync -nvraL test/a test/dest --exclude=a/b/c/d 

これは機能します。 test/a として は同期元のベース ディレクトリです。除外パターンは a/ で始まることによって指定されます

これが役に立たない場合は、実際のパス/除外を表示してください。

-vn を指定して rsync を実行すると、ディレクトリ/ファイルが一覧表示されます。パターンは、rsync が出力する形式と照合されます。


これらのいずれかが機能します:

rsync -nvraL test/a test/dest --exclude=/a/b/c/d
rsync -nvraL test/a/ test/dest --exclude=/b/c/d

末尾の / に注意してください ソースパスの違いは --exclude の方法に決定的な違いをもたらします を指定する必要があります。これは以下を前提としています:

mkdir -p test/a/b/c/d/e
mkdir -p test/a/other/place/a/b/c/d
mkdir -p test/dest

除外パスが / で始まると元の投稿が困難になる .ダニエルの答えは、この最初の / が正しいです。 特定のパスを除外することが望ましい場合があり、この最初の / 先頭の ^ のように理解する必要があります 正規表現で。ただし、彼の回答には、末尾の / に関する重大なタイプミスがあります。 ソース パス内。


エリックの例に従って、これを行いたい:

rsync -nvraL test/a/ test/dest --exclude=/b/c/d

実際、エリックの答えもアントニの答えも完全に正確ではありません.

エリックの言っていることは半分正しい

<ブロック引用>

test/a は同期元のベース ディレクトリであるため、除外パターンは a/ で始まることによって指定されます

除外パターンのルートtest/a です (つまり、パターン /some/path test/a/some/path にバインドします ) ですが、それだけではありません。

マニュアルページから:

<ブロック引用>

パターンが / で始まる場合は、ファイルの階層内の特定の場所に固定されます。それ以外の場合は、パス名の末尾と照合されます。これは、正規表現の先頭の ^ に似ています。したがって、「/foo」は、「転送のルート」(グローバル ルールの場合) またはマージ ファイルのディレクトリ (ディレクトリごとのルールの場合) にある「foo」という名前のファイルと一致します。

per-directory は無視できます ここでは当てはまりません。

したがって、rsync -nvraL test/a test/dest --exclude=a/b/c/d test/a/b/c/d を確実に除外します (および子)、ただし test/a/other/place/a/b/c/d も除外されます .

rsync -nvraL test/a test/dest --exclude=/b/c/d 、一方、のみを除外します test/a/b/c/d (および子供たち) (test/a / のポイントです が固定されています)。

これが、その特定のパスを除外したい場合でも、アンカーの最初のスラッシュが必要な理由です。 バックアップされません。これは細かいことのように思えるかもしれませんが、除外パターンがより具体的になればなるほどそうなるでしょう (例:Pictureshome/daniel/Pictures ) しかし、あなたのお尻を噛むだけかもしれません.


Linux
  1. Rsync:絶対シンボリックリンクを再配置する方法は?

  2. Bashスクリプト実行からのRsync不明なオプション?

  3. Rsync Exclude Folderが機能していませんか?

  1. exclude-from を使用して複数のファイルとディレクトリを除外する 6 つの rsync の例

  2. Linux で Latex を使い始める

  3. 「cp」コマンドを使用して特定のディレクトリを除外する方法は?

  1. include オプションを使用して特定のタイプのファイルのみを rsync コピーする

  2. ホーム ディレクトリで mkdir を使用できません:権限が拒否されました (Linux Lubuntu)

  3. php-fpm を開始できません - ユーザー 'apache' の uid を取得できません