rsync уже, изменяющий существующие файлы

У меня есть простая строка rsync в моем crontab, который получает файлы резервных копий от сервера напоминания до другого.

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

Смотрите на дату и время, которую ниже изменили файлы.

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

rsync -vzre 'ssh' stor@server:/backup/system/ /storage/share/Backup/Server

Файлы, которые будут выбраны:

-rw-r-x--- 1 root stor 896K Jun 22 05:02 giant-140622-etc.zip
-rw-r-x--- 1 root stor 620K Jun 22 05:02 giant-140622-sql.zip
-rw-r-x--- 1 root stor  84M Jun 22 05:02 giant-140622-www.zip
-rw-r-x--- 1 root stor 899K Jun 25 05:00 giant-140625-etc.zip
-rw-r-x--- 1 root stor 603K Jun 25 05:00 giant-140625-sql.zip
-rw-r-x--- 1 root stor  84M Jun 25 05:00 giant-140625-www.zip
-rw-r-x--- 1 root stor 899K Jun 28 05:00 giant-140628-etc.zip
-rw-r-x--- 1 root stor 620K Jun 28 05:00 giant-140628-sql.zip
-rw-r-x--- 1 root stor  86M Jun 28 05:00 giant-140628-www.zip
-rw-r-x--- 1 root stor 899K Jun 30 05:00 giant-140630-etc.zip
-rw-r-x--- 1 root stor 617K Jun 30 05:00 giant-140630-sql.zip
-rw-r-x--- 1 root stor  86M Jun 30 05:00 giant-140630-www.zip

Место назначения:

-rw-r-x--- 1 stor stor 896K Jun 30 06:06 giant-140622-etc.zip
-rw-r-x--- 1 stor stor 620K Jun 30 06:06 giant-140622-sql.zip
-rw-r-x--- 1 stor stor  84M Jun 30 06:06 giant-140622-www.zip
-rw-r-x--- 1 stor stor 899K Jun 30 06:06 giant-140625-etc.zip
-rw-r-x--- 1 stor stor 603K Jun 30 06:06 giant-140625-sql.zip
-rw-r-x--- 1 stor stor  84M Jun 30 06:06 giant-140625-www.zip
-rw-r-x--- 1 stor stor 899K Jun 30 06:06 giant-140628-etc.zip
-rw-r-x--- 1 stor stor 620K Jun 30 06:06 giant-140628-sql.zip
-rw-r-x--- 1 stor stor  86M Jun 30 06:06 giant-140628-www.zip
-rw-r-x--- 1 stor stor 899K Jun 30 06:07 giant-140630-etc.zip
-rw-r-x--- 1 stor stor 617K Jun 30 06:08 giant-140630-sql.zip
-rw-r-x--- 1 stor stor  86M Jun 30 06:10 giant-140630-www.zip

Обновление:

Когда я работаю rsync команда (с --skip-existing аргумент) от оболочки, это только загружает несуществующие новые файлы и пропускает файлы, которые это уже имеет.

При исследовании поведения той же самой команды, выполненной cronjob, уже существующие файлы действительно изменяют каждый цикл, и целое задание берет инкрементно дольше каждый цикл (сравните времена выше, cronjob запускающийся в 6:00, 2 минуты на файл, даже если они уже существуют).

rsync -vzr --ignore-existing -e 'ssh -i /path/id_rsa -l backup' backup@flowl.info:/backup/system/ /nfs/share-private/Backup/Server

Обновление:

Вот июль формы файлов, я поместил дополнительную пустую строку в, посмотрите времена, который запущенный 06:01 и повысьте каждого новые файлы.

-rw-r-x--- 1 stor stor 899K Jul  4 06:01 giant-140702-etc.zip
-rw-r-x--- 1 stor stor 621K Jul  4 06:01 giant-140702-sql.zip
-rw-r-x--- 1 stor stor  86M Jul  4 06:03 giant-140702-www.zip
                                       ^-- 01 to 03
-rw-r-x--- 1 stor stor 899K Jul  4 06:04 giant-140704-etc.zip
-rw-r-x--- 1 stor stor 634K Jul  4 06:05 giant-140704-sql.zip
-rw-r-x--- 1 stor stor  86M Jul  8 06:02 giant-140704-www.zip
                                       ^-- ???
-rw-r-x--- 1 stor stor 899K Jul  8 06:03 giant-140706-etc.zip
-rw-r-x--- 1 stor stor 629K Jul  8 06:03 giant-140706-sql.zip
-rw-r-x--- 1 stor stor  86M Jul  8 06:06 giant-140706-www.zip
                                       ^-- 03 - 06
-rw-r-x--- 1 stor stor 899K Jul  8 06:07 giant-140708-etc.zip
-rw-r-x--- 1 stor stor 629K Jul  8 06:07 giant-140708-sql.zip
-rw-r-x--- 1 stor stor  86M Jul  8 06:10 giant-140708-www.zip
                                       ^-- 07 - 10

Теперь, когда я предполагаю идти на другом месяце, время было бы похоже:

-rw-r-x--- 1 stor stor 899K Jul  8 06:32 giant-140808-etc.zip
-rw-r-x--- 1 stor stor 629K Jul  8 06:32 giant-140808-sql.zip
-rw-r-x--- 1 stor stor  86M Jul  8 06:35 giant-140808-www.zip
                                       ^-- what I imagine to happen
2
задан 9 July 2014 в 11:50
4 ответа

Я добавил команду --ignore-existing и похоже, что она ничего не изменит, а только скачает новые файлы.

rsync -vzr --ignore-existing -e

Редактирование: Когда появляются новые файлы, каждый цикл все равно занимает больше времени.

.
2
ответ дан 3 December 2019 в 08:46

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

В одном сценарии использования я нашел это ужасно неэффективным, так как исходные файлы были только добавлены к ним. Я использовал --size-only, что мне помогло.

Есть еще несколько вариантов, которые выглядят так, как будто они могут быть применимы, --append и --append-verify, но я не тестировал их сам.

Не похоже, что у вас есть каталог с большим количеством маленьких файлов, так что время, чтобы прочитать список каталогов с диска и прочитать статистику каждого файла, не должно быть большой проблемой.

.
4
ответ дан 3 December 2019 в 08:46

почему вы говорите, что каждый раз это занимает больше времени? Как такое возможно?

может быть, это программа, которая генерирует файлы, которые к ним прикасаются?

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

(и, возможно, попробуйте отладить с помощью опции -t, которая сохраняет время модификации)

.
1
ответ дан 3 December 2019 в 08:46

Думаю, добавление -t в список аргументов поможет.

Для проверки этого можно добавить --[itemize-changes к аргументам (без -t). Если я правильно вас понял, то в каждой строке

man 1 rspec это будет показывать T-флаг:

A t означает, что время модификации отличается и обновляется к ценности отправителя (требует... иногда). Альтернативное значение Т означает, что время модификации будет установлено на время переноса, что случается, когда файл/символ/устройство обновляется без --time и когда меняется сим-ссылка, а приемник не может установить время. (Примечание: при использовании клиента rsync 3.0.0 вы можете увидеть флаг s в сочетании с t вместо правильного T-флага для этой установки времени. failure.)

После этого добавьте -t к команде (сохраните --[itemize-changes) и вы получите t-флаг на каждой строке. В следующем запуске список будет содержать только новые файлы.

Это мой пример запуска:

krissi@host ~/tmp/rsync % l *
dst:
total 0

src:
total 0
-rw-r--r-- 1 krissi users 0 Jul 13 18:05 bar
-rw-r--r-- 1 krissi users 0 Jul 13 18:05 foo
-rw-r--r-- 1 krissi users 0 Jul 13 18:19 later
krissi@host ~/tmp/rsync % rsync -vzr --itemize-changes src/ dst/
sending incremental file list
>f+++++++++ bar
>f+++++++++ foo
>f+++++++++ later

sent 174 bytes  received 69 bytes  486.00 bytes/sec
total size is 0  speedup is 0.00
krissi@host ~/tmp/rsync % l *
dst:
total 0
-rw-r--r-- 1 krissi users 0 Jul 13 18:21 bar
-rw-r--r-- 1 krissi users 0 Jul 13 18:21 foo
-rw-r--r-- 1 krissi users 0 Jul 13 18:21 later

src:
total 0
-rw-r--r-- 1 krissi users 0 Jul 13 18:05 bar
-rw-r--r-- 1 krissi users 0 Jul 13 18:05 foo
-rw-r--r-- 1 krissi users 0 Jul 13 18:19 later
krissi@host ~/tmp/rsync % rsync -vzr --itemize-changes src/ dst/
sending incremental file list
>f..T...... bar
>f..T...... foo
>f..T...... later

sent 174 bytes  received 69 bytes  486.00 bytes/sec
total size is 0  speedup is 0.00
krissi@host ~/tmp/rsync % rsync -vzr --itemize-changes src/ dst/
sending incremental file list
>f..T...... bar
>f..T...... foo
>f..T...... later

sent 174 bytes  received 69 bytes  486.00 bytes/sec
total size is 0  speedup is 0.00
krissi@host ~/tmp/rsync % rsync -vzrt --itemize-changes src/ dst/
sending incremental file list
.d..t...... ./
>f..t...... bar
>f..t...... foo
>f..t...... later

sent 177 bytes  received 72 bytes  498.00 bytes/sec
total size is 0  speedup is 0.00
krissi@host ~/tmp/rsync % rsync -vzrt --itemize-changes src/ dst/
sending incremental file list

sent 66 bytes  received 12 bytes  156.00 bytes/sec
total size is 0  speedup is 0.00
krissi@host ~/tmp/rsync % l *
dst:
total 0
-rw-r--r-- 1 krissi users 0 Jul 13 18:05 bar
-rw-r--r-- 1 krissi users 0 Jul 13 18:05 foo
-rw-r--r-- 1 krissi users 0 Jul 13 18:19 later

src:
total 0
-rw-r--r-- 1 krissi users 0 Jul 13 18:05 bar
-rw-r--r-- 1 krissi users 0 Jul 13 18:05 foo
-rw-r--r-- 1 krissi users 0 Jul 13 18:19 later
2
ответ дан 3 December 2019 в 08:46

Теги

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