it-swarm-ru.tech

Любимые советы и хитрости rsync

Чем больше я использую rsync, тем больше понимаю, что это швейцарский армейский нож для передачи файлов. Есть так много вариантов. Я недавно узнал, что вы можете пойти --remove-source-files и ​​он удалит файл из источника, когда он будет скопирован, что делает его немного более подвижным, чем копирует программу. :)

Какие твои любимые маленькие советы и рекомендации по rsync?

57
Rory

Попробуйте использовать rsync версии 3, если вам нужно синхронизировать много файлов! V3 создает свой список файлов постепенно и намного быстрее и использует меньше памяти, чем версия 2.

В зависимости от вашей платформы это может иметь большое значение. На OSX версии 2.6.3 потребовалось бы больше часа или произошел сбой при попытке создать индекс из 5 миллионов файлов, в то время как скомпилированная мною версия 3.0.2 сразу начала копировать.

19
robcast

Использование --link-dest для создания резервных копий на основе моментальных снимков с эффективным использованием пространства, в результате чего создается впечатление, что у вас есть несколько полных копий данных резервных копий (по одной на каждый прогон резервного копирования), но файлы, которые не меняются между прогонами, сложны -связаны вместо создания новых копий, экономя место.

(на самом деле, я все еще использую rysnc-, а затем -cp -al метод, который достигает того же самого, см. http://www.mikerubel.org/computers/rsync_snapshots/ о старом, но все еще очень хорошем сбое обе техники и связанные с этим вопросы)

Одним из основных недостатков этого метода является то, что если файл поврежден из-за ошибки диска, он также поврежден во всех снимках, которые ссылаются на этот файл, но у меня также есть автономные резервные копии, которые в достаточной степени защитят от этого. Еще одна вещь, на которую стоит обратить внимание, это то, что в вашей файловой системе достаточно инодов, или вы исчерпаете их до того, как на самом деле закончится место на диске (хотя у меня никогда не было проблем со значениями по умолчанию ext2/3).

Кроме того, никогда не забывайте, что очень очень полезно --dry-run для небольшой здоровой паранойи, особенно когда вы используете --delete* опции.

18
David Spillett

Если вам нужно обновить веб-сайт несколькими огромными файлами по медленной ссылке, вы можете перенести небольшие файлы следующим образом:

rsync -a --max-size = 100K/var/www/there:/var/www /

затем сделайте это для больших файлов:

rsync -a --min-size = 100K --bwlimit = 100/var/www/there:/var/www /

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

14
Bob

Я использую опцию --existing при попытке синхронизировать небольшое подмножество файлов из одного каталога в другое место.

10
TCampbell

--rsh это мое.

Я использовал его, чтобы изменить шифр на SSH на что-то быстрее (--rsh="ssh -c arcfour") также для создания цепочки sshs (рекомендуем использовать ее с ssh-agent) для синхронизации файлов между хостами, которые не могут общаться напрямую. (rsync -av --rsh="ssh -TA [email protected] ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/).

8
Stephen Paul Lesniewski
--time-limit

Когда эта опция используется, rsync остановится через T минут и завершится. Я думаю, что эта опция полезна, когда rsyncing большое количество данных в ночное время (часы не заняты), а затем останавливается, когда пришло время для людей, чтобы начать использовать сеть, в течение дня (часы заняты).

--stop-at=y-m-dTh:m

Эта опция позволяет вам указать, в какое время остановить rsync.

Batch Mode

Пакетный режим может использоваться для применения одного и того же набора обновлений ко многим идентичным системам.

7
jftuga

Если вам интересно, как далеко продвинулся медленно работающий rsync, и не использовал -v для отображения файлов по мере их передачи, вы можете узнать, какие файлы были открыты:

 ls -l /proc/$(pidof rsync)/fd/*

в системе, которая имеет/proc

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

Это также дало мне немного более интересную информацию - другой конец, по-видимому, сдался, поскольку была также неработающая ссылка на сокет:

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'
6
nealmcb

--archive - это стандартный выбор (хотя не по умолчанию) для заданий, подобных резервному копированию, который обеспечивает копирование большинства метаданных из исходных файлов (разрешения, владение и т. д.).

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

5
Andrew Ferrier

Мой --inplace. Прекрасно работает, когда на сервере для резервных копий работает ZFS или btrfs, и вы делаете собственные снимки.

4
Hubert Kario

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

Я также нахожу --chmod очень полезно, поскольку позволяет вам убедиться, что права доступа находятся в желаемом состоянии, даже если ваш источник испорчен.

4
innaM

--backup-Dir = date +%Y.%m.%d --delete Мы удаляем, но делаем копию ... на всякий случай

4
Konrad

Конечно, есть также --delete, который удаляет материал из цели, который не может быть найден в источнике.

3
innaM

cwrsync - Rsync для Windows http://www.itefix.no/i2/node/1065

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

2
jftuga
--partial 

В случае перебоев

--bwlimit=100

Для ограничения пропускной способности - хорошо для копирования больших файлов, каталогов

2
rebelbass

Если у вас есть rsync, настроенный как демон на сервере, вы можете просто просмотреть общие модули, как и любой другой каталог. Затем вы можете увидеть, какие пути доступны, а какие нет.

1
sybreon

когда я использую GlusterFs, мы имеем узкое место с T файлами нулевого размера, для синхронизации между разбитым кирпичом или репликой мы должны использовать --min-size=1 чтобы не синхронизировать пустой файл с поврежденного сервера

1
vahid chakoshy