2

何千ものサブディレクトリがロードされたディレクトリがあります。

/home/tmp/
          1
          12
          123
          1234
          2345
          234
          3456
          345
          34

各サブディレクトリには、最初のレベルのサブディレクトリが一致する場合に再同期したい数百のサブディレクトリがあります...

必要なのは、特定の数字 [1-9] で始まるディレクトリのみをコピー/rsync する方法です...

私が欲しいと思うのは、基本的にワイルドカードを使用して一致させることができるものです

rsync -rzvvhP remotehost:/home/tmp/1* /home/tmp/

rsync を同期させたい

/home/tmp/1/
/home/tmp/12/
/home/tmp/123/
/home/tmp/1234/

ディレクトリとそれらが持つ子サブディレクトリは含まれますが、異なる数字で始まる最初のレベルのディレクトリは含まれません...

/home/tmp/234/
/home/tmp/2345/
........./3*/
........./4*/ etc..

私が試したこと:

rsync -rzvvhP --exclude='*' --include-from=1.txt remotehost:/home/tmp/ /home/tmp/

1.txt には以下が含まれます。

1
12
123
1234

rsyncはまだ1と3などで始まるすべてのディレクトリを実行しているようですが、2.txtでこれを行うと...

私はちょうど試しました:

rsync -rzvvhP --include-from=2.txt remoteaccount@remotehost:/home/tmp/ /home/tmp/
first I get....
[sender] showing directory 2758 because of pattern 2758

...それは良さそうですが、私は....

1014/135954/T33-2.JPG is uptodate
1014/135956/456309.jpg is uptodate

…どっちが悪い

私が試した提案に従って:

rsync -rzvvhP --size-only --filter='+ /2*/ - /*' remoteuser@remotehost:/home/tmp/ /home/tmp/ 

それを実行すると、最初に得られるのは、このrsyncの一部であってはならないファイルの「最新の」行の束です。

1001/149984/T3201-2.JPG is uptodate

特定の数字で始まるディレクトリのみを rsync する 1 つのコマンドを使用できるようにするには、どうすればよいですか?

4

2 に答える 2

2

次のように、フィルタ ファイルを作成します。

/my/dir/include.txt

+ /1*/
+ /3*/

# Skip everything else
- /*

これをrsyncに追加します

rsync -rzvvhP \
    --filter='merge /my/dir/include.txt' \
    remotehost:/home/tmp/ /home/tmp/
于 2013-02-01T22:00:19.857 に答える
0

あなたが言うので、私は何かが欠けていると確信しています

私が欲しいと思うのは、基本的にワイルドカードを使用して一致させることができるものです

rsync -rzvvhP remotehost:/home/tmp/1* /home/tmp/

しかし、これは単に機能します。

リモートホストにあるものを見てみましょう。

$ ssh remotehost find /tmp/a -type f
/tmp/a/123/x/a
/tmp/a/123/x/c
/tmp/a/123/y/b
/tmp/a/12/x/a
/tmp/a/12/x/c
/tmp/a/12/y/b
/tmp/a/1/x/a
/tmp/a/1/x/c
/tmp/a/1/y/b
/tmp/a/23456/x/a
/tmp/a/23456/x/c
/tmp/a/23456/y/b
/tmp/a/234/x/a
/tmp/a/234/x/c
/tmp/a/234/y/b
/tmp/a/34567/x/a
/tmp/a/34567/x/c
/tmp/a/34567/y/b
/tmp/a/3456/x/a
/tmp/a/3456/x/c
/tmp/a/3456/y/b
/tmp/a/345/x/a
/tmp/a/345/x/c
/tmp/a/345/y/b
/tmp/a/34/x/a
/tmp/a/34/x/c
/tmp/a/34/y/b
/tmp/a/3/x/a
/tmp/a/3/x/c
/tmp/a/3/y/b

そして今、2で始まるディレクトリのみをrsyncします。シェルによっては、ここで行っているようにワイルドカードを引用する必要がある場合と、そうする必要がない場合があります。bash では、これは必要ありません。

$ rsync -rzvvhP 'remotehost:/tmp/a/2*' .
opening connection using: ssh remotehost rsync --server --sender -vvrze.iLsf . "/tmp/a/2*"
receiving incremental file list
delta-transmission enabled
234/
234/x/
234/x/a
       8 100%    7.81kB/s    0:00:00 (xfer#1, to-check=7/12)
234/x/c
       8 100%    7.81kB/s    0:00:00 (xfer#2, to-check=6/12)
234/y/
234/y/b
       8 100%    7.81kB/s    0:00:00 (xfer#3, to-check=5/12)
23456/
23456/x/
23456/x/a
       8 100%    7.81kB/s    0:00:00 (xfer#4, to-check=2/12)
23456/x/c
       8 100%    7.81kB/s    0:00:00 (xfer#5, to-check=1/12)
23456/y/
23456/y/b
       8 100%    7.81kB/s    0:00:00 (xfer#6, to-check=0/12)
total: matches=0  hash_hits=0  false_alarms=0 data=48

sent 149 bytes  received 533 bytes  454.67 bytes/sec
total size is 48  speedup is 0.07
于 2013-02-22T09:21:27.023 に答える