Копировать структуру каталогов поверх другого

Я хотел бы переместить каталог и все его содержимое поверх другого.

Под этим я подразумеваю, что если у меня есть два каталога, A и B, и я хочу переместить B на A, я хочу, чтобы файлы и каталоги, которые не находятся в A, но находятся в B, просто копировались в A, файлы одного и того же имя в A будет обновлено до копий в B, а папки с тем же именем в A будут обновлены новым содержимым из B, но в противном случае сохранится существующее содержимое

Есть ли способ сделать это легко в Bash?

Между прочим, я понимаю, что это то, что происходит, когда вы извлекаете архив tar поверх старой версии этого архива. Это правда?

3 ответа

Решение
rsync -a -v -n /path/to/a/ /path/to/b/

Если все выглядит хорошо, уберите флаг -n, чтобы он действительно выполнял свою работу. Если вы не хотите, чтобы он был таким разговорчивым, уберите флаг -v.

Редактировать: чтобы быть точным, это заставляет b иметь все, что имеет a, плюс сохранять все, что b имел раньше.

Вы на правильном пути с tar, Эта команда будет делать то, что вы хотите:

$ cd /path/to/A
$ tar -cf - * | tar -C /path/to/B -xf -

Я также видел cpio или же rsync используется для этой цели.

Вот пример запуска с tar:

/tmp $ tree A B
A
|-- one
|   `-- two
|       |-- four
|       `-- three
`-- uno
    `-- hello
B
|-- dos
|   |-- hi
|   `-- tres
`-- one
    `-- two
        `-- three

7 directories, 5 files
/tmp $ md5sum A/one/two/three B/one/two/three 
764efa883dda1e11db47671c4a3bbd9e  A/one/two/three
d41d8cd98f00b204e9800998ecf8427e  B/one/two/three
/tmp $ (cd A; tar -cf - * | tar -C ../B -xf -)
/tmp $ tree A B
A
|-- one
|   `-- two
|       |-- four
|       `-- three
`-- uno
    `-- hello
B
|-- dos
|   |-- hi
|   `-- tres
|-- one
|   `-- two
|       |-- four
|       `-- three
`-- uno
    `-- hello

8 directories, 7 files
/tmp $ md5sum A/one/two/three B/one/two/three 
764efa883dda1e11db47671c4a3bbd9e  A/one/two/three
764efa883dda1e11db47671c4a3bbd9e  B/one/two/three
/tmp $ 

Надеюсь, это поможет!

Похоже, вы хотите синхронизировать слишком каталогов.

Это займет немного больше настройки, но если вы хотите часто делать это, вы можете посмотреть на унисон. Вот статья, описывающая настройку.

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