Как я копирую только файлы, которые перезаписывают других в каталоге

Я хочу скопировать и перезаписать только файлы, которые существуют в месте назначения. Иначе, исключая 'одинокие файлы', которые существуют в источнике xor место назначения.

1
задан 2 May 2018 в 23:20

2 ответа

Необходимо смочь достигнуть этого с rsync, использование --existing флаг:

        --existing              skip creating new files on receiver

Напр. данный

$ tree -a A/ B/
A/
├── bar
├── baz
├── foo
└── .hidden
B/
├── bam
├── baz
├── foo
└── .hidden

0 каталогов, 8 файлов

где baz, foo и .hidden распространены, но bar существует только на источнике и bam только на цели, затем (примечание: я включал подробное -v и -n флаг "пробного прогона" в целях иллюстрации):

$ rsync -avn --existing A/ B/
sending incremental file list
.hidden
baz
foo

sent 152 bytes  received 25 bytes  354.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

только обновления baz, foo и .hidden. (Файлы, которые существуют только на месте назначения, проигнорированы по умолчанию.)


Можно проверить это без --existing, bar был бы также скопирован:

$ rsync -avn A/ B/
sending incremental file list
.hidden
bar
baz
foo

sent 155 bytes  received 28 bytes  366.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)
1
ответ дан 7 December 2019 в 15:20

Проверьте это на stackoverflow. Существует несколько решений. Я не судил их, но я думаю, что они должны работать и решить Вашу проблему:

https://stackoverflow.com/questions/47154327/move-or-copy-a-file-if-that-file-exists? utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

Надежда это помогает Вам.;)

0
ответ дан 7 December 2019 в 15:20

Другие вопросы по тегам:

Похожие вопросы: