Я работаю над утилитой резервного копирования с открытым исходным кодом, которая выполняет резервное копирование файлы и передает их в различные внешние места, такие как Amazon S3, Rackspace Cloud Files, Dropbox и удаленные серверы через протоколы FTP / SFTP / SCP.
Теперь я получил запрос функции для выполнения инкрементных резервных копий (в случае резервных копий) которые производятся, имеют большие размеры и становятся дорогими при передаче и хранении). Я искал, и кто-то упомянул утилиту rsync
. Я провел несколько тестов с этим, но не уверен, подходит ли это, поэтому хотел бы услышать мнение любого, кто имеет некоторый опыт работы с rsync
.
Позвольте мне кратко рассказать о том, что происходит при резервном копировании сделан. В основном он начнет сбрасывать базы данных, такие как MySQL, PostgreSQL, MongoDB, Redis. Может потребоваться несколько обычных файлов (например, изображений) из файловой системы. Как только все будет готово, он объединит все это в один файл .tar (дополнительно он сожмет и зашифрует его с помощью gzip
и openssl
).
Как только это все готово, у нас есть единственный файл, который выглядит так:
mybackup.tar.gz.enc
Теперь я хочу передать этот файл в удаленное место. Цель состоит в том, чтобы уменьшить пропускную способность и стоимость хранения. Так что давайте' Предположим, этот небольшой пакет резервных копий имеет размер 1 ГБ
. Поэтому мы используем rsync
, чтобы передать это в удаленное место и удалить резервную копию файла локально. Завтра будет сгенерирован новый файл резервной копии, и окажется, что за последние 24 часа было добавлено намного больше данных, и мы создаем новый файл mybackup.tar.gz.enc
, и он выглядит так: мы достигли размера 1,2 ГБ
.
Теперь мой вопрос: можно ли передать только 200 МБ
, которые были добавлены за последние 24 часа? Я попробовал следующую команду:
rsync -vhP --append mybackup.tar.gz.enc backups / mybackup.tar.gz.enc
Результат:
mybackup.tar.gz.enc 1.20G 100 % 36.69MB / s 0:00:46 (xfer # 1, to-check = 0/1)
отправил 200.01M байт
Поэтому мы используемrsync
, чтобы передать это в удаленное место и удалить резервную копию файла локально. Завтра будет сгенерирован новый файл резервной копии, и окажется, что за последние 24 часа было добавлено намного больше данных, и мы создаем новый файлmybackup.tar.gz.enc
, и он выглядит так: мы достигли размера1,2 ГБ
.Теперь мой вопрос: можно ли передать только
200 МБ
, которые были добавлены за последние 24 часа? Я попробовал следующую команду:
rsync -vhP --append mybackup.tar.gz.enc backups / mybackup.tar.gz.enc
Результат:
mybackup.tar.gz.enc 1.20G 100 % 36.69MB / s 0:00:46 (xfer # 1, to-check = 0/1)
отправил 200.01M байт
Поэтому мы используемrsync
, чтобы передать это в удаленное место и удалить резервную копию файла локально. Завтра будет сгенерирован новый файл резервной копии, и окажется, что за последние 24 часа было добавлено намного больше данных, и мы создаем новый файлmybackup.tar.gz.enc
, и он выглядит так: мы достигли размера1,2 ГБ
.Теперь мой вопрос: можно ли передать только
200 МБ
, которые были добавлены за последние 24 часа? Я попробовал следующую команду:
rsync -vhP --append mybackup.tar.gz.enc backups / mybackup.tar.gz.enc
Результат:
mybackup.tar.gz.enc 1.20G 100 % 36.69MB / s 0:00:46 (xfer # 1, to-check = 0/1)
отправил 200.01M байт
и оказалось, что за последние 24 часа было добавлено намного больше данных, и мы создали новый файлmybackup.tar.gz.enc
, и похоже, что мы подошли к1.2 Размер
ГБ.Теперь у меня вопрос: можно ли передать только
200 МБ
, добавленные за последние 24 часа? Я попробовал следующую команду:
rsync -vhP --append mybackup.tar.gz.enc backups / mybackup.tar.gz.enc
Результат:
mybackup.tar.gz.enc 1.20G 100 % 36.69MB / s 0:00:46 (xfer # 1, to-check = 0/1)
отправил 200.01M байт
и оказалось, что за последние 24 часа было добавлено намного больше данных, и мы создали новый файлmybackup.tar.gz.enc
, и похоже, что мы подошли к1.2 Размер
ГБ.Теперь у меня вопрос: можно ли передать только
200 МБ
, добавленные за последние 24 часа? Я попробовал следующую команду:
rsync -vhP --append mybackup.tar.gz.enc backups / mybackup.tar.gz.enc
Результат:
mybackup.tar.gz.enc 1.20G 100 % 36.69MB / s 0:00:46 (xfer # 1, to-check = 0/1)
отправил 200.01M байт
Можно ли передать только200 МБ
, добавленные за последние 24 часа? Я попробовал следующую команду:
rsync -vhP --append mybackup.tar.gz.enc backups / mybackup.tar.gz.enc
Результат:
mybackup.tar.gz.enc 1.20G 100 % 36.69MB / s 0:00:46 (xfer # 1, to-check = 0/1)
отправил 200.01M байт
Можно ли передать только200 МБ
, добавленные за последние 24 часа? Я попробовал следующую команду:
rsync -vhP --append mybackup.tar.gz.enc backups / mybackup.tar.gz.enc
Результат:
mybackup.tar.gz.enc 1.20G 100 % 36.69MB / s 0:00:46 (xfer # 1, to-check = 0/1)
отправил 200.01M байт
получено 849,40K байт
8,14 МБ / сек
общий размер - 1,20 ГБ
ускорение составляет 2,01Глядя на
отправленные 200,01 Мбайт
, я бы сказал, что «добавление» данных работает правильно. Теперь мне интересно, были ли перенесены все1,2 ГБ
, чтобы выяснить, сколько и что добавить к существующей резервной копии, или же на самом деле передал только200 МБ
? Потому что, если он передал все1,2 ГБ
, то я не вижу, насколько это сильно отличается от использования утилитыscp
для отдельных больших файлов.Кроме того, если что я попытаться выполнить возможно, какие флаги вы рекомендуете? Если это невозможно с
rsync
, можно ли порекомендовать какую-нибудь утилиту вместо этого?Любые отзывы приветствуются!