Назад | Перейти на главную страницу

rsync to NAS каждый раз копирует все

Я запускаю Ubuntu Linux и использую сценарий резервного копирования, который копирует вещи с помощью rsync:

rsync -rc /home/user/source /media/nas/destination

или

rsync -r /home/user/source /media/nas/destination

Однако - это занимает примерно 2,5 часа каждый день (я запускаю это каждый день), чтобы это сделать. По локальной сети 1 Гбит передается примерно 76 ГБ данных. Итак, по сути, rsync просто не пропускает существующие файлы в месте назначения - он просто копирует все снова и снова.

Я предполагаю, что проблема заключается в NAS (d-link 321) и что это общий ресурс samba, который не поддерживает систему сохранения unix, верно? Таким образом, rsync не может отличить старые файлы от новых, верно? Я пробовал rsync с параметром -c (пропускать на основе контрольной суммы, а не времени модификации и размера), но все еще без кубиков, все еще занимает 2,5 часа.

Кто-нибудь может предложить способ синхронизации примерно 70-80 Гб данных, который не требует постоянного «тупого» копирования всего?

Спасибо:)

ОБНОВИТЬ

хорошо. не повезло. Я удалил целевой каталог и дважды запустил его:

rsync -r --times /home/user/source /media/nas/destination

Оба раза все равно потребовалось 2,5 часа. поэтому он копирует все дважды.

ммм. Я пошел глубже, чтобы исследовать эту проблему. И похоже, что rsync не сохраняет время. Я выполнил команду stat для некоторых файлов из источника и места назначения - а время доступа, изменения и изменения не сохраняется в месте назначения. Я понятия не имею, почему это происходит ... Есть другие предложения? P.s. Я относительно новичок в Linux - sio это может быть что-то действительно глупое и глупое :)

ОБНОВЛЕНИЕ 2 Решено: проблема, как я понял, возникла из-за неправильной установки долей. Я монтировал их вот так (в / etc / fstab):

//192.168.10.199/Volume_1 /media/Volume_1 cifs   guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0

И вот что сработало:

//192.168.10.199/Volume_2 /media/Volume_2 cifs    
username=sam,password=some_password,uid=developer,gid=developer,_netdev 0 0

Rsync сохраняет время и занимает всего 3 минуты!

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

Почему бы тебе не попробовать:

rsync -a /home/user/source /media/nas/destination

-a удобная опция специально для архивирования. У меня это работает постоянно.

Вот что говорится на странице руководства:

-a, --archive archive mode; same as -rlptgoD (no -H)

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

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

Очень рекомендую взглянуть на BackupPC также. Он использует rsync и имеет пакеты Debian / Ubuntu. Он будет правильно обрабатывать приращения, сортировать идентичные файлы и сжимать все для экономии места.

Иногда, когда NAS имеет другой формат времени для файлов, может быть полезно добавить -u или --update который имеет эффект skip files that are newer on the receiver.

Я успешно использовал это для резервного копирования на NAS в течение нескольких лет.

Параметры rsync -av --delete / source-dir / target-dir и rsync -avn --delete / source-dir / target-dir -n означают «показать мне, что будет сделано, но не делайте никаких изменений» - -delete удалить файлы, которые находятся в целевом каталоге, но не в исходном каталоге, так как я хочу, чтобы резервная копия была резервной