Труба rsync вывод в файл - PullRequest
       14

Труба rsync вывод в файл

0 голосов
/ 22 октября 2011

Можно ли перенаправить вывод (необработанные данные, без регистрации) в файл rsync и, возможно, сохранить его в bsdiff?Я нахожу, что rsnapshot сильно раздражает из-за отсутствия конфигурации и глупого синтаксиса (отступ, wtf?), А rdiff немного нестабильно.

У меня есть рабочее решение, где я перезаписываю все данные,tar.gz-архив этого и bsdiff для создания патча между двумя tar.gz-архивами.Но это довольно сильно загружает процессор при огромных нагрузках и очень много диска, так как вам приходится каждый раз создавать весь архив.

Подводя итог: - Создайте исходный rsync - bsdiff для предыдущих файлов - АрхивРазница в способе облегчения восстановления

Когда я написал это, у меня только появилась идея с lvm-snapshot, есть ли какие-нибудь вопросы о том, как мне это сделать?

1 Ответ

0 голосов
/ 22 октября 2011

rsync(1) может легко использовать другую оболочку при обращении к удаленным системам;-e ssh является значением по умолчанию, но вы можете написать программу-обертку, которая запускает ssh и сохраняет копию всего содержимого, которое вы перенаправляете в ssh.

Некоторый псевдокод для того, что я 'm думает о:

in[2] = pipe
out[2] = pipe
err[2] = pipe
fork
if child, fork
grandparent /* ssh */
    close 0, 1, 2
    dup2 in[0], 0
    dup2 out[1], 1
    dup2 err[1], 2
    close in, out, err
    exec(ssh, hostname, rsync) -- copy from rsync itself
parent /* stdin -> pipe */
    close in[0], out, err, 1, 2
    open (log, "/path/to/log", "w")
    loop forever:
        read(0, buf)
        write(in[1], buf)
        write(log, buf)
child /* pipe -> stdout, stderr */
    close in, out[1], err[1], 0
    loop forever:
        read(out[0], bufout)
        write(1, bufout)
        read(err[0], buferr)
        write(2, buferr)

Пожалуйста, проверьте еще раз вызовы pipe(2), dup2(2) и close(2) перед выполнением этого;Я полагаю, что правильно подключил дескрипторы и закрыл неиспользуемые дескрипторы в каждом процессе, но это немного неуловимо.

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

...