- 17 полезных примеров команд rsync (удаленная синхронизация) в Linux
- 17 полезных примеров команд rsync (удаленная синхронизация) в Linux
- Пример: 1) Копирование или синхронизация файлов локально (rsync -zvh)
- Пример: 2) Копировать или синхронизировать каталог локально (rsync -zavh)
- Локальное рекурсивное копирование файлов и каталогов (rsync -zrvh or rsync -zavh)
- Пример: 4) Копирование или синхронизация файлов и каталогов из локальной в удаленную систему.
- Пример: 5) Копирование или синхронизация файлов и каталогов с удаленного компьютера в локальную систему.
- Пример: 6) Укажите удаленную оболочку во время синхронизации (rsync -e ssh)
- Пример: 7) Отображение хода синхронизации в выводе команды rsync
- Пример: 8) Скопируйте структуру каталогов без копирования файлов
- Пример: 9) Возобновить передачу больших файлов после сбоя в scp
- Пример: 10) Удалить файлы в месте назначения, если его нет в источнике (–delete)
- Пример: 11) Установите ограничение на размер передаваемого файла (–max-size)
- Пример: 12) Не синхронизировать/копировать измененный файл в месте назначения
- Пример: 13) Удалить файлы из источника после синхронизации (–remove-source-files)
- Пример: 14) Команда rsync пробного запуска перед фактической синхронизацией
- Пример: 15) Включить и исключить файлы во время синхронизации с rsync
- Пример: 16) Установите ограничение на скорость передачи данных в rsync(–bwlimit= )
- Пример: 17) Просмотр разницы в файлах и каталогах между источником и местом назначения
- LFTP для синхронизации между серверами в Linux
- В Linux для синхронизации между серверами, помимо использования rsync, мы также можем использовать lftp.
- Преодоление медленной синхронизации данных в LFTP
- Создание сценария автоматической синхронизации загрузки LFTP
- Примеры синхронизации Rsync
- Особенности Rsync
- Синтаксис Rsync
- Опции Rsync
- Настройка сервера Rsync
- Примеры синхронизации Rsync
- 1. Копирование и синхронизация файлов на локальном компьютере
- 2. Синхронизация папок на локальной машине
- 3. Синхронизация с удаленным сервером
- 4. Синхронизация файлов по SSH
- 5. Просмотр прогресса при синхронизации
- 6. Синхронизация не всех файлов в rsync
- 7. Удаление при синхронизации
- 8. Максимальный размер файлов
- 9. Удаление исходных файлов
- 10. Режим симуляции rsync
- 11. Ограничить скорость передачи
- 12. Автоматическая синхронизация папок rsync
- Выводы
- Оцените статью:
- Об авторе
- 27 комментариев
17 полезных примеров команд rsync (удаленная синхронизация) в Linux
17 полезных примеров команд rsync (удаленная синхронизация) в Linux
Как следует из названия, команда rsync используется для локальной и удаленной синхронизации (или копирования) файлов и каталогов. Одной из важных особенностей rsync является то, что он работает по « алгоритму дельта-передачи », что означает, что он будет только синхронизировать или копировать изменения из источника в место назначения вместо копирования всего файла, что в конечном итоге сокращает объем данных, отправляемых по сети. Вундеркинды Linux обычно используют команду rsync для повседневного управления резервным копированием, зеркалированием и восстановлением. Он использует удаленную оболочку, такую как SSH, при синхронизации файлов с локальной машины на удаленную, и любой пользователь в системе может использовать команду rsync, поскольку она не требует прав root или sudo .
В этой статье мы обсудим 17 полезных примеров команды rsync в Linux, эти примеры особенно помогут новичкам в Linux более эффективно управлять задачами синхронизации, зеркалирования и резервного копирования.
Команда Rsync доступна для всех операционных систем типа UNIX и Linux. Когда мы выполняем минимальную установку CentOS и RHEL OS, тогда пакет rsync не является частью установки по умолчанию, поэтому для установки rsync на CentOS и RHEL выполните следующую команду yum
В операционных системах Debian Like (Ubuntu и Linux Mint) используйте команду ниже apt для установки инструмента rysnc
Синтаксис команды rsync:
Локальная синхронизация: # rsync
Удаленная синхронизация: # rsync
Удаленная синхронизация: # rsync @ :
Некоторые из наиболее часто используемых параметров команды rsync перечислены ниже:
- -v, –verbose Подробный вывод
- -q, –quiet вывод сообщения
- -a, –archive архивные файлы и каталог во время синхронизации (-a равно следующим параметрам -rlptgoD)
- -r, –recursive рекурсивная синхронизация файлов и каталогов рекурсивно
- -b, –backup сделать резервную копию во время синхронизации
- -u, –update не копировать файлы из источника в место назначения, если файлы назначения новее
- -l, –links копировать символические ссылки как символические ссылки во время синхронизации
- -n, –dry-run выполнить пробный запуск без синхронизации
- -e, –rsh=COMMAND указать удаленную оболочку для использования в rsync
- -z, –compress сжимать данные файла во время передачи
- -h, –human-readable человечески понятное отображение выходных чисел в удобочитаемом формате
- –progress показать прогресс синхронизации во время передачиr
Давайте перейдем к полезным примерам команды rsync
Пример: 1) Копирование или синхронизация файлов локально (rsync -zvh)
Предположим, мы хотим скопировать файл из домашнего каталога пользователя pkumar в папку /opt/back, выполните следующую команду rsync >rsync -zvh /home/pkumar/OpenStack-Networking.pdf /opt/backup
OpenStack-Networking.pdf
sent 4.09M bytes received 35 bytes 2.73M bytes/sec
total size is 6.15M speedup is 1.50
[[email protected]
Выше мы использовали такие параметры, как -z для сжатия, -v для подробного вывода и -h для вывода, удобочитаемого человеком.
Пример: 2) Копировать или синхронизировать каталог локально (rsync -zavh)
Предположим, мы хотим скопировать или синхронизировать домашний каталог пользователя pkumar в папку /opt/backup выполните следующую команду rsync с параметрами -zavh,
Давайте проверим, скопирован ли каталог или нет, выполните команду ниже,
Как мы видим, каталог «pkumar» создается в папке назначения, и его содержимое также копируется. В приведенном выше примере, если использовать trail / после исходной папки(/home/pkumar/) тогда команда rsync не создаст каталог pkumar в месте назначения, а скопирует только содержимое..
Локальное рекурсивное копирование файлов и каталогов (rsync -zrvh or rsync -zavh)
Предположим, у нас есть несколько файлов и каталогов внутри домашнего каталога пользователя pkumar, используйте приведенную ниже команду rsync для рекурсивного копирования файлов и каталогов, либо используйте параметр -a или -r для рекурсивного копирования файлов и каталогов.
Примечание . В команде rsync параметр -a используется для архивирования во время копирования или синхронизации, а кроме архивирования параметр -a также используется для следующих целей:
- рекурсивно копировать файлы и каталог
- копировать символические ссылки как символические ссылки
- сохранить разрешения, группу, время модификацииправо, собственности
Пример: 4) Копирование или синхронизация файлов и каталогов из локальной в удаленную систему.
Предположим, мы хотим скопировать папку “/home/pkumar/techi” с локальной машины на удаленную (192.168.1.29) /opt
Пример: 5) Копирование или синхронизация файлов и каталогов с удаленного компьютера в локальную систему.
Предположим, мы хотим скопировать файлы и каталоги с удаленного компьютера (192.168.1.29) в нашу локальную систему, в приведенном ниже примере я копирую удаленную папку “/opt/rpms_db” на моем локальном компьютере в папку /tmp
Вышеуказанная команда автоматически создаст папку “rpms_db” в папке /tmp на нашем локальном компьютере
Пример: 6) Укажите удаленную оболочку во время синхронизации (rsync -e ssh)
В команде rsync мы можем указать удаленную оболочку, например ssh, во время синхронизации, предположим, что мы хотим использовать безопасную связь между источником и целевой машиной через rsync, тогда мы должны использовать ssh в качестве удаленной оболочки, пример показан ниже
Пример: 7) Отображение хода синхронизации в выводе команды rsync
Если вы хотите видеть прогресс синхронизации или копирования в команде rsync, используйте “–progress“, пример показан ниже.
Пример: 8) Скопируйте структуру каталогов без копирования файлов
Есть несколько сценариев, когда мы хотим скопировать структуру каталогов, пропуская файлы только с локального компьютера на удаленный или наоборот.
Предположим, мы хотим скопировать структуру каталогов “/home/pkumar” с локального компьютера на удаленный (192.168.1.29) в папку /opt folder.
Пример: 9) Возобновить передачу больших файлов после сбоя в scp
В профиле администратора linux есть несколько сценариев, когда мы начали копировать файл большего размера с помощью команды scp, но он прервался в середине, и мы не можем позволить себе начать копирование его снова с помощью scp из-за его большого размера и затрат времени.
Таким образом, в этой ситуации можно использовать команду rsync, поскольку она может начать копирование файла с того места, где оно было остановлено или завершено, или, другими словами, rsync может передавать файлы, которые частично скопированы с помощью команды scp. Пример показан ниже,
Пример: 10) Удалить файлы в месте назначения, если его нет в источнике (–delete)
Если вы уже синхронизировали файлы из источника в место назначения и из источника вы удалили файлы, вы можете заставить команду rsync удалить файлы в месте назначения, используя параметр –delete, пример показан ниже
Пример: 11) Установите ограничение на размер передаваемого файла (–max-size)
Если вы не хотите передавать или копировать большие файлы с помощью rsync, используйте опцию ‘–max-size=
Примечание. Чтобы указать размер в МБ, используйте M, а для ГБ — G
Пример: 12) Не синхронизировать/копировать измененный файл в месте назначения
Есть несколько сценариев, в которых мы изменили файлы в месте назначения, и мы не хотим перезаписывать измененные файлы из источника во время синхронизации, поэтому этого можно легко достичь с помощью параметра -u в команде rsync.
Пример: 13) Удалить файлы из источника после синхронизации (–remove-source-files)
Предположим, вы хотите удалить файлы из источника после завершения синхронизации с помощью команды rsync. В приведенном ниже примере папка из локальной системы “/home/pkumar/techi.tgz” синхронизируется с удаленной системой (192.168.1.29), после завершения синхронизации файл удаляется из источника.
Пример: 14) Команда rsync пробного запуска перед фактической синхронизацией
Могут быть ситуации, когда мы не говорим о поведении команды rsync, поэтому в таких случаях лучше выполнить пробный запуск rsync.
Пример: 15) Включить и исключить файлы во время синхронизации с rsync
Бывают ситуации, когда мы хотим скопировать или синхронизировать файлы и каталоги определенного типа и хотим исключить файлы или каталоги определенного типа. Команда Rsync поддерживает параметры включения и исключения.
В приведенном ниже примере вы хотите скопировать файлы типа pdf и rpm и исключить типы файлов png.
Пример: 16) Установите ограничение на скорость передачи данных в rsync(–bwlimit= )
В команде rsync мы можем установить ограничение полосы пропускания для передачи данных с одной машины на другую, используйте параметр‘–bwlimit= ‘ в команде rsync, чтобы установить ограничение на скорость передачи данных.
Предположим, мы хотим установить максимальную скорость передачи данных (скорость) 600 КБ / с с помощью rsync, пример показан ниже.
Пример: 17) Просмотр разницы в файлах и каталогах между источником и местом назначения
Используйте параметр “-i” в команде rsync, чтобы указать разницу в файлах и каталогах между источником и местом назначения. Пример показан ниже
Согласно вышеприведенному выводу команды, есть разница в файле с именем «projects.txt» в месте назначения. Ниже приведены значения ключевых слов в выводе выше.
- d: указывает на изменение в файле назначения
- f: указывает файл
- t: указывает изменение меток времени
- s: указывает на изменение размера
Вот и все из этого руководства, на случай, если эти примеры помогут вам лучше понять команду rsync, тогда, пожалуйста, поделитесь своими отзывами и комментариями.
Источник
LFTP для синхронизации между серверами в Linux
В Linux для синхронизации между серверами, помимо использования rsync, мы также можем использовать lftp.
Lftp – это ftp-клиент, который может рекурсивно перемещаться в подпапки для упрощения синхронизации файлов. Как и rsync, только lftp не имеет функции дельта-сжатия и не работает на основе изменений блока (он проверяет временную метку). Как пользоваться?
Сначала установите lftp на свой Linux. Для CentOS используйте команду
или если вы вошли в систему как не root, начните с sudo
Во-вторых, подключите lftp к удаленному ftp-серверу
Если ваш удаленный сервер не поддерживает SSL, отключите поддержку SSL в lftp (принудительно используйте порт 21), чтобы он не зависал при SSL-соединении / рукопожатии.
Вы также можете сначала войти в систему, а затем отключить ssl с помощью команды:
В-третьих, сделать зеркала
Если вы хотите выполнить зеркальное отображение из УДАЛЁННОГО в ЛОКАЛЬНОЕ, используйте команду
Если вы хотите зеркало из ЛОКАЛЬНОГО в УДАЛЁННОЕ, используйте команду
Преодоление медленной синхронизации данных в LFTP
Если будет синхронизироваться много данных – происходить это будет медленно, потому как вам придется синхронизировать тысячи файлов. Решение состоит в том, чтобы активировать проверку на основе времени листинга файла.
Используйте set ftp:use-mdtm off и mirror —ignore-time для первого вызова, чтобы избежать повторной загрузки всех файлов.
Вы также можете попробовать обновить lftp и / или использовать set ftp:use-mlsd on , в этом случае lftp получит точное время модификации файла из выходных данных команды MLSD (при условии, что сервер поддерживает команду).
Создание сценария автоматической синхронизации загрузки LFTP
Если вы хотите, чтобы это было просто и можно было сделать автоматический cron, создайте файл .txt следующим образом:
Источник
Примеры синхронизации Rsync
Потребность передачи файлов между серверами и компьютерами возникает довольно часто, особенно при администрировании нескольких устройств. Обычно для этих целей удобно использовать ssh и scp, но если файл очень большой, а изменена была только небольшая его часть, или вы хотите настроить постоянную автоматическую синхронизацию, то scp уже явно неидеальный вариант. Для этого существуют специальные утилиты. В этой статье мы рассмотрим одну из них. А именно будет рассмотрена rsync синхронизация в linux.
Rsync — это программное обеспечение с открытым исходным кодом, которое можно использовать для синхронизации файлов и папок с локального компьютера на удаленный и наоборот. Примечательная особенность Rsync — возможность передавать зашифрованные файлы с помощью SSH и SSL. Кроме того, здесь передача файлов выполняется в один поток, в отличие от других подобных программ, создающий отдельный поток для передачи каждого файла. Это увеличивает скорость и убирает дополнительные задержки, которые становятся проблемой при передаче большого количества маленьких файлов.
Возможно использование rsync для синхронизации файлов, каталогов, при этом может применяться сжатие и шифрование. Программа впервые была применена в июне 1996 года, она разработана Эндрю Тридгелом и Полом Маккерасом. Rsync синхронизация выполняется по протоколу RSYNC, который специально разработан не просто для передачи файлов между двумя компьютерами, а для их синхронизации. Если точнее, то передается не файл полностью, а только то, что было изменено.
Как вы уже поняли, в этой статье мы рассмотрим rsync примеры синхронизации, настройку rsync, а также ее основные возможности и опции.
Особенности Rsync
Давайте сначала рассмотрим примечательные особенности Rsync:
- Возможность поддерживать синхронизацию целых деревьев каталогов;
- Можно сохранять символические ссылки, жесткие ссылки, владельцев и права файла, метаданные и время создания;
- Не требует особых привилегий;
- Передача файлов одним потоком;
- Поддержка RSH, SSH в качестве транспорта;
- Поддержка анонимного Rsync.
Синтаксис Rsync
Мы не будем подробно останавливаться на установке этой утилиты в системе. Она очень популярна, поэтому вы можете установить ее с помощью своего пакетного менеджера из официальных репозиториев. В Ubuntu команда установки будет выглядеть вот так:
sudo apt-get install rsync
А теперь, уже по традиции подобных статей, рассмотрим синтаксис команды rsync:
$ rsync опции источник приемник
В качестве источника и приемника может выступать удаленная или локальная директория. Например, ssh, rsync, samba сервер или локальная директория. Опции задают дополнительные параметры rsync.
Опции Rsync
Теперь давайте кратко рассмотрим параметры rsync. Здесь перечислены не все опции. Для более подробной информации смотрите man rsync:
- -v — Выводить подробную информацию о процессе копирования;
- -q — Минимум информации;
- -c — Проверка контрольных сумм для файлов;
- -a — Режим архивирования, когда сохраняются все атрибуты оригинальных файлов;
- -R — Относительные пути;
- -b — Создание резервной копии;
- -u — Не перезаписывать более новые файлы;
- -l — Копировать символьные ссылки;
- -L — Копировать содержимое ссылок;
- -H — Копировать жесткие ссылки;
- -p — Сохранять права для файлов;
- -g — Сохранять группу;
- -t — Сохранять время модификации;
- -x — Работать только в этой файловой системе;
- -e — Использовать другой транспорт, например, ssh;
- -z — Сжимать файлы перед передачей;
- —delete — Удалять файлы которых нет в источнике;
- —exclude — Исключить файлы по шаблону;
- —recursive — Перебирать директории рекурсивно;
- —no-recursive — Отключить рекурсию;
- —progress — Выводить прогресс передачи файла;
- —stat — Показать статистику передачи;
- —version — Версия утилиты.
Настройка сервера Rsync
Как вы понимаете, нельзя просто так взять и закинуть на первую попавшуюся машину файлы без установки на нее специального программного обеспечения. На удаленной машине должен быть установлен и настроен RSYNC, SSH, Samba или FTP сервер, с помощью которого Rsync сможет авторизоваться на машине и передавать туда файлы.
Рассмотрим минимальную настройку сервера rsync, для того чтобы могло быть выполнено копирование файлов rsync. Он позволит нам не только синхронизировать файлы на машину, но и получать их от туда.
Сначала создайте конфигурационный файл со следующим содержимым:
sudo vi /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
[share]
path = /tmp/share/
hosts allow = 192.168.56.1
hosts deny = *
list = true
uid = root
gid = root
read only = false
Здесь мы задаем путь к нашей папке для синхронизации, разрешаем доступ к серверу только с ip адреса (192.168.56.1) и запрещаем все остальные подключения. Параметры uid и gid указывают пользователя и группу, от которых будет запущен демон. Лучше не использовать root, а указать пользователя nobody и выдать ему права на ту папку, в которую будет выполняться синхронизация каталогов rsync.
Настройка rsync завершена, остается сохранить файл, запустить сервер rsync и добавить его в автозагрузку:
sudo systemctl start rsync
sudo systemctl enable rsync
Сервер будет предоставлять доступ к файлам без запроса пароля.
Примеры синхронизации Rsync
Дальше давайте рассмотрим использование rsync, примеры синхронизации.
1. Копирование и синхронизация файлов на локальном компьютере
Rsync позволяет синхронизировать файлы и папки в пределах одной машины. Давайте сначала рассмотрим использование rsync для синхронизации файла на локальном компьютере:
rsync -zvh file /tmp/backups/
Указав опцию —progress вы можете видеть сколько процентов уже скопировано, а сколько еще осталось:
rsync -zvh —progress file /tmp/backups/
2. Синхронизация папок на локальной машине
Синхронизация папок rsync выполняется так же просто, как и файлов:
rsync -zvh /home/user/documents /tmp/backups/
Если вы хотите, чтобы все атрибуты файлов, такие, как дата изменения и создания сохранялись, необходимо использовать опцию -a:
rsync -azvh /home/user/documents /tmp/backups/
3. Синхронизация с удаленным сервером
Ненамного сложнее синхронизировать файлы с удаленным сервером. Скопируем локальную папку documents, на удаленный сервер:
rsync -avz /home/sergiy/tmp/ root@192.168.56.102:/home/
По умолчанию rsync попытается использовать транспорт ssh. Если вы хотите использовать ранее созданный сервер rsync, нужно указать это явно:
rsync -avz /home/sergiy/tmp/ rsync://192.168.56.102:/share
Точно также можно синхронизировать файлы с rsync из удаленного сервера:
rsync -avz root@192.168.56.102:/home/ /home/sergiy/tmp/
Адрес удаленного сервера записывается в таком формате:
имя_пользователя@ адрес_машины /папка/на/удаленной_машине
Синхронизация папок rsync будет выполняться на стандартном порту.
4. Синхронизация файлов по SSH
Чтобы задать протокол подключения используется опция -e. При использовании SSH все передаваемые данные шифруются и передаются по защищенному каналу, таким образом, чтобы никто не мог их перехватить. Для использования SSH вам нужно знать пароль пользователя в системе.
Синхронизация файлов rsync с удаленного сервера по ssh будет выглядеть вот так:
rsync -avzhe ssh root@192.168.56.102:/root/install.log /tmp/
Если вы используете другой порт для ssh, то здесь его можно указать:
rsync -avzhe «ssh -p 22» root@192.168.56.102:/root/install.log /tmp/
А теперь передадим данные на тот же сервер:
rsync -avzhe ssh backup.tar root@192.168.0.101:/backups/
5. Просмотр прогресса при синхронизации
Для просмотра прогресса копирования файла с одной машины на другую используется опция progress:
rsync -avzhe ssh —progress /home/user/documents root@192.168.56.102:/root/documents
6. Синхронизация не всех файлов в rsync
Опции include и exclude позволяют указать какие файлы нужно синхронизировать, а какие исключить. Опции работают не только с файлами но и с директориями.
Например, скопируем все файлы, начинающиеся на букву R:
rsync -avze ssh —include ‘R*’ —exclude ‘*’ root@192.168.56.102:/root/documents/ /root/documents
7. Удаление при синхронизации
Во время синхронизации можно удалять файлы, которых нет на машине откуда идет rsync синхронизация, для этого используется опция —delete.
rsync -avz —delete root@192.168.56.102:/documents/ /tmp/documents/
Если перед выполнением этой команды создать в папке файл которого нет на удаленном сервере, то он будет удален.
8. Максимальный размер файлов
Вы можете указать максимальный размер файлов, которые нужно синхронизировать. Для этого используется опция —max-size. Например, будем синхронизировать только файлы меньше 200 килобайт:
rsync -avzhe ssh —max-size=’200k’ /user/documents/ root@192.168.56.102:/root/documents
9. Удаление исходных файлов
Есть возможность удалять исходные файлы после завершения синхронизации с удаленным сервером:
rsync —remove-source-files -zvh backup.tar /tmp/backups/
Таким образом, файл backup.tar будет удален после завершения копирования в папку /tmp/backups.
10. Режим симуляции rsync
Если вы новичок, и еще не использовали rsync, то возможно захотите посмотреть как отработает команда без применения реальных действий в файловой системе. Для этого есть опция dry-run. Команда только выведет все выполняемые действия в терминал, без выполнения реальных изменений:
rsync —dry-run —remove-source-files -zvh backup.tar /tmp/backups/
11. Ограничить скорость передачи
Вы можете ограничить использование пропускной способности сети с помощью опции —bwlimit:
rsync —bwlimit=100 -avzhe ssh /user/home/documents/ root@192.168.56.102:/root/documents/
Как я уже писал выше, rsync синхронизирует только части файла, если вы хотите синхронизировать файл целиком используйте опцию -W:
rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
12. Автоматическая синхронизация папок rsync
Можно расписать автоматическую синхронизацию с помощью cron. Но в случае доступа к серверу по SSH необходимо будет создать ключ и загрузить его на сервер, чтобы аутентификация проходила без запроса пароля.
ssh-keygen -t rsa
Загружаем ключ на сервер к с которым собираемся синхронизироваться:
ssh-copy-id -i /home/sk/.ssh/id_rsa.pub sk@192.168.1.250
Теперь можем переходить к настройке расписания cron. Будем запускать синхронизацию каждый день:
00 05 * * * rsync -azvre ssh /home/user/Downloads/ 192.168.56.102:/share
rsync синхронизация каталогов будет выполняться каждый день в пять утра. Подробнее о настройке расписаний Cron можно почитать в отдельной статье.
Выводы
Теперь вы знаете все что нужно, чтобы настройка rsync была выполнена правильно. Мы рассмотрели некоторые примеры rsync синхронизации. И теперь вы можете использовать все это для решения своих задач. Я упустил какую-то полезную информацию или у вас остались вопросы? Напишите в комментариях!
Нет похожих записей
Оцените статью:
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
27 комментариев
На каком основании вы не указываете реальных авторов всех статей на вашем «сайте».
У вас нет ни единой своей статьи, а только рерайт других авторов на коих вы и не пытаетесь поставить ссылки.
Даже при беглом просмотре «ваших» статей понятно, что это максимум не очень хорошо адаптированный машинный перевод, потому как «ваши» объяснения той или иной темы обрывочны и абсолютно не компетенты.
Проставьте ссылки на авторство в положенной форме.
У вас четверо суток с момента написания данного коментария.
Это слишком громкое заявление. Если статья является точным переводом источника, то ссылка на источник размещена внизу статьи. Если я ее адаптировал и переделал, то естественно, ссылка не размещается из соображений СЕО.
Принято госорить репринт, а не рерайт.
хочу поставить ссд на свой ноут, всю систему установить на нем, тоесть корень и хоме, а хдд держать для копий каталога хоме, как это сделать что бы все то что я имею я ссд копировалось в хдд , как установить, настроить
אֵלִיָּה אֵלִיָּהוּ Если не разобрался за 3 месяца напиши мне. Попробую помочь. Пиши на email Teemitze@gmail.com Надеюсь оставив свой E-mail не нарушил правила сайта.
У вас то и дело применяется ключ -h. Зачем?
автор же писал » Для более подробной информации смотрите man rsync».
-h, —human-readable output numbers in a human-readable format
Вряд ли это требует ответа на вопрос зачем
А если мне нужно синхронизировать два каталога в обе стороны, т.е. чтоб как yandex.disk, при изменение в одном источнике синхронизировались все, как это можно сделать?
Здравствуйте! Подскажите пожалуйста, имеется домашний сервер 18.04, 2 диска. Как правильно настроить автоматическую синхронизацию с одного диска на другой?
привет, я хотел синхронизировать уже скопированную папку (через cp -r) с помощью команды rsync -rvh dir1 /root/dir2. после синхронизации папка dir2 получилось намного большего размера чем dir1. я хочу чтобы они были одинакового размера. вопрос: как мне это сделать?
добавить —delete в параметрах rsync
Довольно редко пишу комментарии. Но просто не смог не удержаться, чтобы не поблагодарить Вас за эту статью. Благодаря ей настроил синхронизацию файлов с боевого сервера на запасной. После падения ihor (меня не задело) как-то задумался о нормальных бекапах.
Осталось настроить репликацию БД. Искал у Вас на сайте подходящую статью, но не нашел, к сожалению. Если вдруг что-то подходящее есть, поделитесь, пожалуйста, ссылкой.
Доброго дня. Огромное спасибо за прекрасные руководства! Благодаря вашему сайту настроил все сетевые шары на своих серверах с CentOS.
Сейчас пытаюсь разделить фронтенд и файловый сервер на DLE, соответственно папка с загруженными файлами должна синхронизироваться со вторым сервером. Подскажите, можно ли запускать RSYNC по крону каждую минуту? И если будет синхронизироваться большой файл, который будет передаваться несколько минут, не будет ли в итоге ежеминутно запускаться новый процесс RSYNC с передачей этого файла? Или возможно есть другой способ синхронизировать папки на разных серверах в режиме реального времени?
Думаю, что можно только если следующий запуск будет делаться после завершения предыдущего. Или можно использовать сетевые файловые системы, тот же GlusterFS или CephFS. Может сейчас и новее что-то придумали.
Спасибо за ответ, продолжу гуглить по ключевым словам GlusterFS или CephFS 🙂
Выполняю команду rsync -avz -e «ssh» —progress test@source.domen:/home/src/dir/* /home/backup/bkp/ —delete Но в целевом каталоге остаются файлы уже удаленные на источнике. Куда смотерть?
—delete поднять куда-нить ближе к —progress ?
Здравствуйте, подскажите решение.
Есть такая структура папок и нужно исключить только ‘dir1/dir3’.
После выполнения команды
$ rsync -av –exclude dir3 source/ destination/
Получиться такая структура (исключаются все ‘dir3’)
dir1
-dir2
—dir1
—dir2
-dir4
—dir1
—dir2
Решение нашлось. Полный путь в значении exclude решает проблему.
$ rsync -av –exclude ‘/dir3/’ source/ destination/ — дает нужный результат
Из статьи неясно, как же пользоваться этим rsync. Хотя некоторые примеры весьма полезны тем не менее. У этой утилиты слишком много ключей и основная трудность состоит как раз в этом. А тут этот вопрос затронут лишь вскользь. к тому же используется ключ -а. Это оч плохой ключ. Если посмотреть в документации, то он соответствует -rlptgoD вобщем куча ключей. Режим архивирования. Но это совсем др задача. Я обычно пишу -u, что означает обновить. или ничего, что означает переписать. И там таких ключей не один. а ещё есть дублированные ключи. Именно поэтому эта утилита оч проблематична в использовании. Чтоб понять что происходит лучше конкретно указывать что вы хотите. И изучите вначале ключи как следует, а не куча непонятных ключей. К тому же при неумелом использовании можно затереть данные. так что потратьте время на тщательное изучение ключей их там сотня. А то хуже будет! Ничто не сравнится с потерей данных. Если не получается воспользуйтесь простым копированием. это долго, но это гарантированно надёжно. А ещё меня раздражает постоянная постоянна смена позиций источника и назначения. Здесь общепонятное расположение когда указывается вначале источник, а потом назначение. в других командах америкосы считают что надо вначале писать назначение, а потом источник. Смотрите не перепутайте, а то вместо сохранения пргреса вы его затрёте.
Статья хорошая.
Но я крайне не доволен автором за то что он своими квадратиками на экране загородил — Кошку. 🙁
Кошка должна быть видна в полностью.
Добрый день. Есть такой вопрос: если я настраиваю синхронизацию файлов в «локальную» папку (которая, на самом деле, вовсе не локальная, а монтированная через cifs «шара» windows-машины), то не возникнет ли проблем с синхронизацией, и как вообще будут сохраняться атрибуты файлов? Может быть в таком случае стоит особенно обратить внимание на какие-то ключи?
О создании фильтра частичного копирования rsync с ключом —exclude-from
Пусть у нас есть носитель source, на котором каталог files, его нужно сохранить на носитель dest. Содержимое каталога files:
docs
images
music
video
work
Полностью нужно скопировать все каталоги, кроме video. В нём, в подкаталоге saved, находятся сохранённые видео с корпоративов и прогулок. А ещё в video содержится отсортированная по жанрам древняя коллекция фильмов, не особо нужная в эпоху быстрых интернетов, но удалить её рука не поднимается. Содержимое каталога video:
action
comedy
fantasy
horror
saved
scifi
soap
Лишний раз тратить место на целевом диске мы не хотим, поэтому из video надо выбрать только saved. Создадим файл filter.cfg, в котором пропишем правила исключения из обработки, и запустим командой
rsync -a —delete —exclude-from=filter.cfg /source/files /dest
Как известно, каждая строка фильтра содержит шаблон включения в копирование или исключение из него. Шаблон в своём начале может иметь модификатор — «+» или «-«. Если «плюс», то это шаблон включения, если «минус» — исключения из копирования. Если у шаблона модификаторов нет, то он истолковывается исходя из опции, с которой он используется: если с include-from, то шаблон включения, если с exclude-from — то исключения. Т.е. если использовать модификаторы в каждой строке фильтра, то можно один и тот же файл фильтра без изменений использовать с обеими опциями.
Пытаемся создать файл filter.cfg, исключив весь video, но вклчюив video/saved:
— video
+ video/saved
Вроде всё логично, но результат неверный. Каталога video на целевом носителе нет вообще:
user@computer:
$ ls -1 /dest/files
docs
images
music
work
Как же так?
Дело вот в чём:
1) rsync просматривает фильтр каждый раз при обработке каждого элемента копирования;
2) фильтр просматривается сверху вниз, т.е. важна последовательность шаблонов;
3) как только найден подходящий шаблон, дальнейший просмотр прекращается;
4) каталог и его содержимое для rsync не одно и то же. Если в исключающем шаблоне указать каталог как таковой, то rsync не только не скопирует его, но даже не попытается войти внутрь, чтобы поинтересоваться содержимым. Поэтому включающие фильтры для подкаталогов не сработают. Так что для доступа к подкаталогам надо исключать не сам каталог, а его содержимое, прибавляя к имени «/*».
То есть корректный файл filter.cfg должен быть таким:
+ video/saved
— video/*
Как работает этот фильтр:
rsync, обрабатывая source/files, натыкается на video и ищет соответствие. Не найдя его, решает, что всё в порядке, и создаёт в /dest/files пустой каталог video. Далее, обрабатывая содержимое video на источнике, пропускает каталоги с action по horror, т.к. они соответствуют шаблону исключения «- video/*». video/saved тоже соответствует этому шаблону, но перед ним уже есть подходящий шаблон «video/saved». scifi же и soap — пропускаются.
(Продолжение после публикации коммента)
(Продолжение про —exclude-from)
Теперь усложним задачу: мы распределили содержимое source/files/video/saved: записи с прогулок и корпоративов поместили в подкаталоги walk и corporative соответственно, а для прочей сохранёнки выделили other. Эти калалоги создадим внутри каталога saved.
$ cd /source/files/video/saved
user@computer:/source/files/video/saved$ mkdir walk corporative other
.
user@computer:/source/files/video/saved$ ls -1
corporative
other
walk
Решаем, что резервировать будем только записи с корпоративов (чтобы было чем шантажировать коллег, ага). На радостях редактируем filter.cfg, который приобретает вид:
+ video/saved/corporative
— video/*
Запускаем, и видим на целевом носителе пустую папку video:
$ ls -1 /dest/files/video
(А в ответ — тишина). Да не, фигня какая-то. Не фигня.
Источник