Как к rsync только новые файлы

Если Ваша цель состоит в том, чтобы действительно "обнулить" диск, то я поставил самое быстрое, которое можно получить, должен выпустить безопасное использование команды стирания низкого уровня hdparm (см. здесь для пошаговых инструкций).

Примечание две вещи:

  • Как hdparm страница справочника ярко указывает, операция "ОПАСНА".
  • С другой стороны, это может также восстановить сбойные блоки.

157
11.03.2013, 09:28
5 ответов

От man rsync:

--ignore-existing       skip updating files that exist on receiver

--update делает что-то немного отличающееся, которое является, вероятно, почему Вы получаете неожиданные результаты (см. man rsync):

Это вынуждает rsync пропустить любые файлы, которые существуют на месте назначения и имеют измененное время, которое является более новым, чем исходный файл. (Если существующий целевой файл будет иметь время изменения, равное исходному файлу, то он будет обновлен, если размеры будут отличаться.)

200
27.01.2020, 19:27
  • 1
    Хорошо на самом деле я попробовал команду '-игнорируют - существующий' вместо '-обновление'. Это закончилось быстро, но не помещает новые файлы в удаленный хост. Какие-либо идеи? Спасибо –  supermario 12.03.2013, 04:34
  • 2
    сосут (правильно, я пошел туда), рассматриваемый вопрос, делает --ignore-existing средний не передают файлы, которые существуют на получателе или не передают файлы, если некоторый файл/папка с тем же именем существует на получателе? –  puk 20.11.2013, 11:05
  • 3
    обновление действительно пропускает файлы, когда mtimes идентичны (который не является тем, что формулировка подразумевает). Я протестировал это. Я полагаю, что формулировка была бы лучше понята, если бы она сказала "только исходные файлы, которые являются более новыми, чем целевой будет скопирован". –  Octopus 28.11.2015, 09:41
  • 4
    @Octopus "только исходные файлы, которые являются более новыми, чем место назначения, будут скопированы"... или исходные файлы, которые имеют то же время изменения как их целевые дубликаты файла, но имеют различные размеры. Я думаю, что это - важный момент. (Chris уже покрыл это, спасибо), –  Jonathan Komar 21.04.2017, 11:24
  • 5
    Таким образом, Вам нужно - игнорируют - существующий и (рекурсивный)-r. (подробный)-v хорош иметь также :-) –  DutchUncle 04.02.2018, 20:57

На основе моего опыта с rsync раздел на 1 ТБ, копирующий, является слишком большим, чтобы быть эффективным. Это берет rsync навсегда для обработки его. Вместо этого сделайте это подкаталогами. Таким образом, выполненный rsync для каждого основного подкаталога. Это идет намного быстрее, если это не должно манипулировать десятками тысяч файлов.

2
27.01.2020, 19:27
  • 1
    Возможно, у Вас закончилась память, и Ваша система начала подкачивать? –  Marcel Burkhard 26.02.2016, 23:24

В моем случае у меня были похожие проблемы, когда все файлы были переданы вместо только измененных / новых. Я решил эту проблему, используя параметры -t (вместо -a ) и -P (эквивалент - partial --progress ):

rsync -h -v -r -P -t source target

При этом передаются только новые файлы, а файлы уже существующие, но измененные: -a выполняет слишком много, например, синхронизация идентификаторов пользователей и групп, которая в моем случае не может работать, поскольку у меня разные пользователи и группы в исходной и целевой системах.

Подробное описание параметров:

  • -h : удобочитаемые числа
  • -v : подробный
  • -r : рекурсивный поиск по каталогам
  • -P : - частичный (сохранить частично переданные файлы) +
    - progress (показать прогресс во время передачи)
  • -t : сохранить время модификации
42
27.01.2020, 19:27

Попробуйте

rsync -zvrt --update SOURCE DESTN
-2
27.01.2020, 19:27

Чтобы скопировать только новые файлы, вы можете использовать следующую команду:

rsync -v -a --ignore-existing /backup/ /site/
0
24.10.2021, 07:36

Теги

Похожие вопросы