7

Я хочу rsync мой рабочий каталог в двух других каталогах. Один пункт назначения будет для резервного копирования, другой для его тестирования. Я попробовал это:

rsync -av --exclude='.git' source dest1,dest2

Но тогда я получаю ошибку - 'dest1,dest2' не найдена. Похоже, он видит это как один путь к каталогу. Конечно, я бы запускал команду дважды с другим каталогом назначения, но это добавляет, и я хотел бы всегда rsync без необходимости использовать несколько команд.

Можно ли сделать что-то подобное?

2 ответа2

3

Возможно, используйте цикл for :

for dest in dest1 dest2; do 
    rsync -av --exclude='.git' source $dest
done
2

Предлагаемое решение для цикла работает, но если вы передаете большой объем данных, оно будет очень медленным. Это связано с тем, что он сериализует задания, связанные скоростью записи на диск. Лучшей, но немного более сложной альтернативой является использование GNU Parallel:

http://www.gnu.org/software/parallel/

Вы можете придумать команду для распараллеливания нескольких запусков rsync, которая была бы в N раз быстрее, если вы одновременно записываете на N дисков.

Аналогичное параллельное решение для сетевой проблемы дано здесь:

https://stackoverflow.com/questions/24058544/speed-up-rsync-with-simultaneous-concurrent-file-transfers

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .