rsyn c только папка без файлов внутри и без файлов сканирования - PullRequest
0 голосов
/ 28 мая 2020

Я хотел бы использовать rsyn c для синхронизации c только папки между папками a и b

> rsync -zaSH --delete -vv --delete -f"+ f/" -f"- f/*" a/ b
sending incremental file list
[sender] showing directory f because of pattern f/
[sender] hiding file f/1.data because of pattern f/*
[sender] hiding file f/4.data because of pattern f/*
[sender] hiding file f/8.data because of pattern f/*
[sender] hiding file f/10.data because of pattern f/*
[sender] hiding file f/6.data because of pattern f/*
[sender] hiding file f/3.data because of pattern f/*
[sender] hiding file f/5.data because of pattern f/*
[sender] hiding file f/9.data because of pattern f/*
[sender] hiding file f/7.data because of pattern f/*
[sender] hiding file f/2.data because of pattern f/*
delta-transmission disabled for local transfer or --whole-file
f/
total: matches=0  hash_hits=0  false_alarms=0 data=0

sent 88 bytes  received 90 bytes  356.00 bytes/sec
total size is 0  speedup is 0.00

> tree 
.
├── a
│   └── f
│       ├── 10.data
│       ├── 1.data
│       ├── 2.data
│       ├── 3.data
│       ├── 4.data
│       ├── 5.data
│       ├── 6.data
│       ├── 7.data
│       ├── 8.data
│       └── 9.data
└── b
    └── f

Как видно из подробного вывода, файлы по-прежнему сканировались. Если в папке миллионы файлов, это может занять очень много времени. Есть ли способ достичь той же цели без сканирования файлов? Спасибо.

1 Ответ

1 голос
/ 02 июня 2020

Вы не можете остановить сканирование файлов непосредственно внутри a/f/, но он не должен сканировать какие-либо подкаталоги из них, если они также не называются f.

Эта команда также исключает их:

rsync -aSH --delete -vv --delete -f"+ /f/" -f"- /f/*" a/ b/

Шаблоны префиксов с / означают соответствие root исходного каталога.

(Я также удалил -z, потому что сжатие не имеет смысла для локальных копий.)

...