Назад | Перейти на главную страницу

Скопируйте структуру каталогов поверх другой

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

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

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

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

Ты на правильном пути с 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 $ 

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

rsync -a -v -n /path/to/a/ /path/to/b/

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

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

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

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