Команда rsync выполняет инкрементное копирование или перезапись файла?

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

3 Solutions collect form web for “Команда rsync выполняет инкрементное копирование или перезапись файла?”

Uh, это действительно зависит от флагов, переданных rsync , но по умолчанию rsync зеркалирует весь файл (ы) от источника до места назначения, хотя вы можете настроить то, что происходит со степенью с --update или --existing или --ignore-existing или также различные исключения исключений ( --delete , --delete , --delete-excluded ) среди других опций ( --prune-empty-dirs и т. д.).

Существует (слава богу!) Никаких подсказок (кроме паролей), и никакой поддержки «схожего имени», которое я знаю (какой вариант использования потребует?).

rsync обычно создает новую версию файла рядом с пунктом назначения, а затем переключает его на имя назначения в последний момент, когда он будет завершен. Новая версия может быть создана либо с использованием дельт, то есть с изменениями между источником и получателем или в виде полной копии. (См. Мой ответ для Smarter filetransfers, чем rsync, для некоторой ясности в отношении этой разницы.)

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

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

На странице руководства:

 It is famous for its delta-transfer algorithm, which reduces the amount of data sent over the network by sending only the differences between the source files and the existing files in the destination. 

Вы можете увидеть это в действии с тестом:

 $ mkdir foo bar
 $ echo "a"> foo / a
 $ rsync -av --stats foo / bar /
 отправка инкрементного списка файлов
 ./


 Количество файлов: 2 (рег: 1, реж .: 1)
 Количество созданных файлов: 1 (reg: 1)
 Количество удаленных файлов: 0
 Количество переданных обычных файлов: 1
 -> Общий размер файла: 2 байта
 -> Общий переданный размер файла: 2 байта
 ...бла бла бла...

Это устанавливает, что начальный rsync отправляет 2 байта данных из источника в целевые dirs.

Теперь добавьте новый файл и rsync:

 $ echo "b"> foo / b
 отправка инкрементного списка файлов
 ./
 б

 Количество файлов: 3 (рег: 2, реж .: 1)
 Количество созданных файлов: 1 (reg: 1)
 Количество удаленных файлов: 0
 Количество переданных обычных файлов: 1
 -> Общий размер файла: 4 байта
 -> Общий переданный размер файла: 2 байта
 ...бла бла бла...

Здесь rsync правильно видит, что все файлы составляют 4 байта, но нужно отправить только 2. Другими словами, он не перезаписывает существующий файл.

  • Сравнение времени rsync - какова точность сравнения Модифицированных времен
  • Ошибка rsync: некоторые файлы / attrs не были переданы
  • Обратный rysnc с несколькими источниками
  • rsync: как включить файлы с именем, заканчивающимся в определенной строке
  • Подстановочные знаки в списке исключений-файлов для дублирования
  • Rsync --backup-dir, кажется, игнорируется
  • Сломанная труба в моем rsync.sh
  • Не работает каталог rsync exclude
  • Как рекурсивно синхронизировать временные метки файлов по серверам?
  • как фильтровать по звездочке или аналогичному выражению rsync в zsh
  • rsync с использованием функции args
  • Interesting Posts

    / dev / sda1 смонтирован; не будет создавать файловую систему здесь!

    Требует ли rsync как хоста-источника, так и целевого хоста запускать rsync в качестве клиента, сервера или демона?

    доступ к переменной цикла в цикле

    Как загрузить систему во втором HD, но запустить систему в другой?

    Извлечь сжатый файл по его заголовку, поскольку он передается по каналу из stdout (локально или из удаленного места)?

    В моем безопасном журнале добавлена ​​новая группа, о которой я не уверен после добавления семанажа

    Как заставить gpg найти gpg-agent

    Преобразование текстовых файлов с ASCII в Unicode без какой-либо команды

    завершение bash не работает для одного пользователя

    Как напечатать знаки пунктуации на моей локализованной клавиатуре?

    Почему не работает этот нераспространен?

    Имеет ли Unix / Linux какие-либо функции защиты от ключевых регистраторов?

    Хорошая практика заключается в том, чтобы создать фоновое задание в сценарии инициализации, если процесс не может самоопределиться?

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

    Изменение даты доступа, изменения и изменения файла к той же прошлой дате

    Linux и Unix - лучшая ОС в мире.