Rsync

Материал из OpenWiki
Версия от 06:53, 14 октября 2008; ImportUser (обсуждение)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Использование rsync

  rsync -vaHx --progress --numeric-ids --delete \
    --exclude-from=asylum_backup.excludes --delete-excluded \
    root@asylum:/home/asylum/ /backup/rsync/asylum/_home_asylum.demo/
  • Опции
    • -v - говорливость, выводит имена обрабатываемых файлов;
    • -a - работа в режиме архивирования, сохраняются права доступа и информация о владельцах;
    • -H - сохранять жесткие ссылки, оставляя их на другом конце бэкапа;
    • -x - не выходить за пределы текущей точки монтирования;
    • --progress - показывать сколько процентов осталось до завершения и скорость передачи;
    • --numeric-ids - не транслировать имена владельца и группы в цифровые UID и GID, оставить на удаленной стороне номера как есть;
    • --delete - удалять из бэкапа файлы, которых уже нет на стороне источника;
    • --exclude-from=asylum_backup.excludes - список файлов исключенных из бэкапа, допускается использование масок, напирмер "htdocs/*/*.jpg";
    • --delete-excluded - удалять части которые уже есть на стороне бэкапа, но появились в списке исключения;
    • root@ - под каким пользоателем осущестляются подключение;
    • asylum - имя хоста к которому производится подключение;
    • /home/asylum/ - директория источник, которую нужно бэкапить;
    • /backup/rsync/asylum/_home_asylum.demo/ - куда сохранять бэкап;
  • Для определения транспорта нужно задать переменную
RSYNC_RSH "ssh -c arcfour -o Compression=no -x"
  • ssh - транспорт ssh (можно задать через "-e ssh");
  • -c arcfour - тип шифрования;
  • -o Compression=no - отключить сжатие средствами ssh, rsync сам сжимает данные;
  • -x - отключаем X туннелинг;
  • Другие полезные опции:
    • -n - режим тестирования, реально никаких действий по копированию не производится, только эмуляция;
    • -W - передает файлы целиком, а не блоками, как задумано в оригинальном алгоритме rsync;
    • -c - использование сверки по контрольным суммам, а не по времени изменения и размеру;
    • -S - допускает оптимизацию дискового пространства через создание "дырявых" файлов;
    • --delete отличается от --delete-after тем, что удаление производится вначале, а не на завершающей стадии процесса бэкапа. --delete-after работает быстрее, так как не требует лишней стадии обхода списка файлов, но требует использования опции --force для обработки таких ситуаций как удаление файла и появление диретории с тем же именем;
    • -T - сохранять временные файлы в отдельной диретории, а не в текущей;
    • --compare-dest=DIR - сохранять новые и измененные файлы в отдельной директории, не трогая на время коприрования основную директорию назначения, в конце - разом, путем переименования, обновить содержимое бэкапа;
    • --link-dest=DIR - использовать жесткие ссылки на файлы в DIR, например, для создания подобия снапшотов;
    • --bwlimit - ограничение пропускной способности, чтобы не забивать канал;
    • --ignore-errors - продолжать копирование и удаление после появления ошибок;
    • --max-delete - ограничение максимально числа удаляемых за один раз файлов и каталогов;
    • -z - включить сжатие передаваемых данных;
    • -A - сохранять не только права доступа, но и ACL;
    • -D - сохранять файлы устройств
    • --files-from=FILE - задать список директорий и файлов для бэкапа в файле;
    • --times - синхронизировать время модификации файлов;
    • --backup - старые измененные или удаленные файлы не теряются а переименовываются или перемещаются в заданную чере --backup-dir=DIR директорию. Пример инкрементального бэкапа:
      rsync --force --ignore-errors --delete --delete-excluded --exclude-from=exclude_file \
        --backup --backup-dir=`date +%Y-%m-%d` -av

Заметки

  • rsync потребляет примерно 100 байт на каждый файл в списке, поэтому при передаче огромного числа файлов к памяти нужно относиться аккуратно;
  • Шаблон начинающийся с '/' проверяется с начала строки, иначе с конца;
  • Для задания шаблона только для директорий нужно указать в конце '/';
  • Если необходимо исключить все поддиректории в /dir, кроме /dir/best, в список исключений нужно поместить:
      + /dir/best/
      - /dir/*

Ссылки