Я выполнил rsync для резервного копирования одного из наших рабочих серверов. Я поместил рабочий сервер в режим только для чтения так, чтобы никакие дополнительные данные не могли быть добавлены или изменены. Я затем сделал рекурсивный rsync с архивом (-a) для резервного копирования каталога данных рабочих серверов к удаленному резервному копированию, которое настроено идентичное рабочему серверу.
После того, как дни передали, что я нашел, был то, что резервный (целевой) сервер закончил тем, что имел приблизительно на 100 МБ больше данных. Как это могло быть - который нормален? Какая-либо идея, как разыскать это? Прямо сейчас я убираю ls-laR в файл и на рабочем сервере и на сервере резервного копирования. Я затем попробую к разности файлы, чтобы видеть, существуют ли какие-либо различия. Какие-либо другие подсказки?
Я бы не стал особо беспокоиться. В конце концов, это могут быть редко размещенные файлы. Когда они копируются через логический доступ к файлам, который использует rsync, нераспределенное пространство расширяется при чтении как заполненная нулями область, и, таким образом, вы получаете больше места. Размеры файлов в исходном и целевом файлах будут одинаковыми.
Кстати,вместо сравнения я мог бы сравнить контрольные суммы файлов через md5sum или sha1sum.
По умолчанию rsync не удаляет файлы из места назначения, когда обнаруживает, что файл был удален из источника, так что это вероятный источник разницы в размерах. Вы можете определить это поведение с помощью флага - delete
, а также указать, как выполнять резервное копирование удаленных / измененных файлов в месте назначения с помощью - backup
и - backup -dir
flags.
Вот отрывок из старого сценария ночного резервного копирования, который использовал это:
rootdir='/usr/local/backup/'
cmd_frame='rsync -ave ssh --delete --backup --backup-dir=%s %s %s'
logfile=${rootdir}logs/`date +%s.log`
backup_root=${rootdir}copy/
diff_root=${rootdir}diffs/`date '+%Y/%m/%d/'`
sources=''
for domain in `cat ${rootdir}backup_list.txt`; do
sources=`printf '%s user@host:/home/user/%s ' "$sources" "$domain"`
done
`printf "$cmd_frame\n" "$diff_root" "$sources" "$backup_root"` > $logfile
Самая последняя резервная копия существует в copy /
с удаленными / измененными файлами, которые копируются под соответствующая папка diffs / год / месяц / день /
, плюс полный путь к файлу.
Еще одна возможность состоит в том, что некоторые файлы были удалены с рабочего сервера, и rsync не получил указание удалить файлы из резервной копии ( - удалить
-опция).
Существует несколько возможных причин, по которым копия занимает не так много места, как оригинал:
rsync
есть два возможных варианта (управляемых параметром - sparse
): либо конечные файлы будут разреженными, либо нет. Обычная команда cp
имеет три варианта: сделать все копии разреженными, сделать ни одну из копий разреженной, сделать копию разреженной, если исходный. Если вы используете разные ОС на резервных / целевых машинах, да, может быть разница. Один и тот же файл в Linux больше, чем в Windows из-за окончания строк, и это будет иметь смысл, если у вас много текстовых файлов.
Другой сценарий может заключаться в том, что какая-то ОС может использовать степень 10 вместо степени 2 при перечислении файлов, например 2 ^ 10 = 1024, что определенно не 10 ^ 3 = 1000
Это менее вероятно, но вот что ... убедитесь, что вы не смотрите на размер на диске, если у вас другие ОС, например FAT, NTFS, exFAT используют кластеры в качестве блока, что полностью отличается от ext (2,3,4)