Удобное копирование файлов между серверами

Недавно передо мной встала задача по перекидыванию кучи файлов с одного сервера на другой. scp оказалась не очень удобной для этого, так как возникли проблемы с симлинками и расставлением прав, поэтому пришлось обратиться к команде rsync. Правда тут же возникла другая проблема – к части файлов не было доступа, поэтому они не скопировались, но так как на экран выводилась вся доступная информация о происходящем, то разделить глазами, что куда выводится возможности не было. Перенаправление вывода в файл спасало, но при этом терялась информация о процессе. И тут на помощь пришёл tee и конечная команда стала выглядеть так

rsync -ave ssh : > >(tee /tmp/rsync_log) 2> >(tee /tmp/rsync_err_log >&2)

Смысл в следующем:

  • rsync – собственно команда копирования
  • -a – команда архивирования. Включает в себя
    • r = рекурсивное копирование (по директориям)
    • l = копирование симлинков, как симлинков
    • p = сохранение прав
    • t = сохранение времени создания файлов
    • g = сохранение групп, которой принадлежит файл
    • o = сохранение владельца файла
    • D = сохранение файлов устройств и специальных файлов
  • v = verbose режим, то есть выводится дополнительная информация.
  • e = выполнить соответствующую команду на удалённой машине.
  • >(tee …) = скопировать stdout в файл и копию отправить на экран
  • 2> = добавить к выводу на stdout результат выполнения следующей команды
  • >(tee … >&2) = скопировать вывод stderr в файл и так же отдать его на экран.

В общем и целом, получилось достаточно удобно. Наверняка более глубокое изучение rsync и прочих команд могло бы позволить делать какие-то более эффективные вещи, но для пяти минут гугления эта команда дала более чем приемлимый результат.

Способы управления несколькими удалёнными репозиториями в гите

Самый простой и изящный способ, который я нашёл на http://jeetworks.org/node/22

git remote | xargs -L 1 git push

Meiretta

Берк сделал кибернетическую руку для своего персонажа!
Встречаем
http://youtu.be/24fLi3he5IA