Я запускаю 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 удалить файлы, которые находятся в целевом каталоге, но не в исходном каталоге, так как я хочу, чтобы резервная копия была резервной