Команда синхронизации в Linux

Обновлено: 21.11.2024

Я знаю, что он делает. Думаю, мне любопытно, почему это исправляет проблему в приложении, которое я унаследовал. Я взял на себя довольно большое приложение tomcat, которое действует как сервер Red5 для группы flex-клиентов и обрабатывает множество данных взаимодействия в реальном времени, которые в конечном итоге передаются в API рельсов. Проблема заключалась в том, что со временем нагрузка на эти клиенты увеличилась до 3-400 мс, где обычно выполняется синхронизация && echo 3 > /proc/sys/vm/drop_caches

и волшебным образом сервер вернулся к жизни и начал работать на полной скорости, обслуживая это соединение. Было ли это совпадением или такое поведение имеет смысл и почему?

Трудно сказать. Вы не ожидали бы, что эти команды сделают что-то полезное на сервере, если бы он не был ужасно неправильно настроен. Но это, конечно, нельзя исключать без более тщательного изучения. Если это произойдет снова, попробуйте только синхронизацию или только эхо. Затем попытайтесь выяснить, почему сервер работает медленно в тех случаях, когда это устраняет (максимально ли загружен ЦП? Максимально ли задействован ввод-вывод? Система подкачки?)

2 ответа 2

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

  • running man sync расскажет вам, что делает синхронизация [очищает буферы FS]
  • погуглив «linux drop_caches», вы узнаете, что ввод в него числа 3 освобождает все ненужные страницы памяти из кеша [в исправной системе в этом нет необходимости]
  • command1 && command2 разбивается на «если команда1 завершится успешно, запустите команду2»
    • партнером для этого является command1 || команда2, также известная как «если команда 1 не удалась, запустите команду 2»

    Команда, которую вам дали, представляет собой в лучшем случае временное исправление и указывает на то, что с вашей системой что-то еще не так. Либо ваши диски подходят к концу, либо мощность вашей системы слишком мала для того, что вы с ней делаете, либо и то, и другое.

    В системе существует два типа памяти для хранения; одна - постоянная память, а другая - временная память, которая является оперативной памятью. Команда «sync» используется для синхронизации данных временной памяти с постоянной памятью. Скорость ОЗУ выше, чем у постоянных устройств хранения, поэтому система использует ОЗУ вместо жесткого диска для обработки данных, а в ОЗУ система хранит данные в виде кэша.

    Хотя хранение данных в оперативной памяти повышает скорость работы системы, в случае внезапного сбоя системы существует риск потери важных данных, хранящихся в виде кеша. Данные лучше синхронизировать в постоянной памяти, чтобы в случае сбоя не было потери данных.

    В этой статье мы обсудим команду синхронизации, используемую в Linux для синхронизации данных ОЗУ в постоянном хранилище.

    Как использовать команду синхронизации в Linux

    Команда sync используется для синхронизации данных кэша с жестким диском, общий синтаксис использования команды sync:

    < td>Используется для синхронизации файловых данных файла
    Параметры Пояснение
    -d, –data
    -f, --file-system Используется для синхронизации всех файлов, которые связаны с данным файлом
    –help Отображает параметры справки
    –версия Отображает сведения о версии команды

    Чтобы понять, как использовать команду синхронизации, мы рассмотрим несколько практических примеров. Сначала синхронизируем все данные текущего пользователя с помощью команды:

    Он синхронизировал все кешированные файлы в постоянную память, принадлежащую текущему пользователю, также у нас есть текстовый файл в /home/hammad/mytestfile1.txt, мы можем синхронизировать данные его кеша с помощью команды:

    Для синхронизации файловых систем мы используем параметр «-f» в команде:

    В приведенной выше команде мы синхронизировали все файлы, относящиеся к /home/hammad/Downloads, мы также можем синхронизировать данные кеша смонтированного раздела (в нашем случае это sda1) с помощью команды:

    Данные смонтированного раздела синхронизированы, также мы можем синхронизировать данные журнала /var/log/syslog с помощью команды:

    Чтобы проверить более подробную информацию о команде синхронизации, мы можем использовать параметр «–help»:

    Аналогично параметр «версия» используется для проверки версии команды синхронизации:

    Заключение

    Команда sync используется в Linux для копирования данных из энергозависимой памяти, имеющей форму кэша, в постоянную память. Система сохраняет все данные во временной памяти из-за ее лучшей скорости по сравнению с постоянными запоминающими устройствами, это полезно, но иногда в случае неожиданного отключения системы существует большой риск потери данных. Чтобы избежать этого риска, рекомендуется синхронизировать полезные данные из временной памяти в постоянную память. В этой статье мы обсудили использование команды sync в Linux с помощью примеров для лучшего понимания.

    Об авторе

    Хаммад Захид

    Я выпускник инженерного факультета, и моя страсть к ИТ привела меня к Linux. Теперь я учусь и делюсь своими знаниями со всем миром.

    Используйте команду 'sync', если вы ожидаете отключения электроэнергии

    • Университет Буффало
    • Университет Денвера
    • Пенсильванский университет

    Бывший автор Lifewire Юрген Хаас – разработчик программного обеспечения, специалист по данным и поклонник операционной системы Linux.

    Команда sync для Linux записывает все данные, буферизованные в памяти компьютера, на диск.

    Зачем использовать команду «синхронизировать»

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

    При незапланированном отключении компьютера с Linux все данные, хранившиеся в памяти, теряются или файловая система повреждается. Команда sync заставляет все данные во временной памяти записывать в постоянное хранилище файлов, например на диск, чтобы никакие данные не были потеряны.

    Когда использовать

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

    Синтаксис

    Команда имеет следующий вид:

    Параметры этой команды включают:

    • --help отображает всю доступную справку, а затем закрывает
    • --version отображает информацию о версии и завершает работу
    • --data (или -d) синхронизирует только данные файла без поддерживающих метаданных
    • --file-system (или -f) также синхронизирует файловые системы, содержащие файлы, на которые ссылаются

    Соображения

    Синхронизацию вручную запускать не принято, и когда она запущена, она не возвращает результаты в стандартный вывод. Чаще всего люди запускают эту команду перед какой-либо другой командой, которая может дестабилизировать работу Linux. ядра, или если вы считаете, что вот-вот произойдет что-то плохое, например разрядка аккумулятора, и у вас нет времени на полное отключение системы.

    При остановке или перезапуске системы операционная система автоматически синхронизирует данные в памяти с постоянным хранилищем по мере необходимости.

    Rsync (Remote Sync) – это наиболее часто используемая команда для копирования и синхронизации файлов и каталогов как удаленно, так и локально в системах Linux/Unix.

    С помощью команды rsync вы можете удаленно и локально копировать и синхронизировать данные между каталогами, дисками и сетями, выполнять резервное копирование данных и создавать зеркала между двумя машинами Linux.

    В этой статье объясняется 10 основных и дополнительных способов использования команды rsync для удаленной и локальной передачи файлов на компьютерах под управлением Linux. Вам не нужно быть пользователем root для запуска команды rsync.

    Некоторые преимущества и особенности команды Rsync

    • Эффективно копирует файлы и синхронизирует их с удаленной системой.
    • Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений.
    • Это быстрее, чем scp (Secure Copy), поскольку rsync использует протокол удаленного обновления, который позволяет передавать только различия между двумя наборами файлов. В первый раз он копирует все содержимое файла или каталога из источника в место назначения, но в следующий раз копирует в место назначения только измененные блоки и байты.
    • Rsync потребляет меньше пропускной способности, поскольку использует метод сжатия и распаковки при отправке и получении данных на обоих концах.
    Основной синтаксис команды rsync
    Некоторые общие параметры, используемые с командами rsync
    • -v : подробно
    • -r : рекурсивное копирование данных (но не сохранение временных меток и разрешений при передаче данных).
    • -a : архивный режим, который позволяет рекурсивно копировать файлы, а также сохраняет символические ссылки, права доступа к файлам, владельцев пользователей и групп и временные метки.
    • -z : сжать данные файла.
    • -h : удобочитаемый, выводить числа в удобочитаемом формате.

    Установите Rsync в системе Linux

    Мы можем установить пакет rsync с помощью следующей команды в вашем дистрибутиве Linux.

    1. Копировать/синхронизировать файлы и каталог локально

    Копировать/синхронизировать файл на локальном компьютере

    Следующая команда синхронизирует один файл на локальном компьютере из одного места в другое. В этом примере файл с именем backup.tar необходимо скопировать или синхронизировать с папкой /tmp/backups/.

    В приведенном выше примере вы можете видеть, что если место назначения еще не существует, rsync автоматически создаст каталог для места назначения.

    Копировать/синхронизировать каталог на локальном компьютере

    Следующая команда перенесет или синхронизирует все файлы из одного каталога в другой каталог на том же компьютере. Здесь, в этом примере, /root/rpmpkgs содержит некоторые файлы пакета rpm, и вы хотите, чтобы этот каталог был скопирован в папку /tmp/backups/.

    2. Копировать/синхронизировать файлы и каталоги на сервер или с сервера

    Копировать каталог с локального сервера на удаленный сервер

    Эта команда синхронизирует каталог с локального компьютера на удаленный компьютер. Например, на вашем локальном компьютере есть папка «rpmpkgs», содержащая несколько RPM-пакетов, и вы хотите, чтобы содержимое локального каталога отправлялось на удаленный сервер, вы можете использовать следующую команду.

    Копировать/синхронизировать удаленный каталог с локальным компьютером

    Эта команда поможет вам синхронизировать удаленный каталог с локальным каталогом. В этом примере каталог /root/rpmpkgs, который находится на удаленном сервере, копируется на ваш локальный компьютер в /tmp/myrpms.

    3. Rsync через SSH

    С помощью rsync мы можем использовать SSH (Secure Shell) для передачи данных. Используя протокол SSH при передаче наших данных, вы можете быть уверены, что ваши данные передаются по защищенному соединению с шифрованием, чтобы никто не мог прочитать ваши данные во время их передачи. передается по сети в Интернете.

    Кроме того, когда мы используем rsync, нам необходимо предоставить пароль пользователя/корневого пользователя для выполнения этой конкретной задачи, поэтому при использовании параметра SSH ваши логины будут отправляться в зашифрованном виде, чтобы ваш пароль был в безопасности.

    Скопировать файл с удаленного сервера на локальный сервер с помощью SSH

    Чтобы указать протокол с помощью rsync, вам нужно указать опцию «-e» с именем протокола, который вы хотите использовать. Здесь, в этом примере, мы будем использовать «ssh» с опцией «-e» и выполнять передачу данных.

    Скопировать файл с локального сервера на удаленный сервер с помощью SSH

    4. Показать ход передачи данных с помощью rsync

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

    5. Использование опций –include и –exclude

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

    В этом примере команда rsync будет включать только те файлы и каталоги, которые начинаются с «R», и исключать все остальные файлы и каталоги.

    6. Использование опции –delete

    Если файл или каталог не существует в источнике, но уже существует в месте назначения, вы можете удалить этот существующий файл/каталог в месте назначения во время синхронизации.

    Мы можем использовать параметр «–delete», чтобы удалить файлы, которых нет в исходном каталоге.

    Источник и цель синхронизированы. Теперь создайте новый файл test.txt в цели.

    Target имеет новый файл с именем test.txt, при синхронизации с источником с опцией «–delete» он удалил файл test.txt.

    7. Установите максимальный размер файлов для передачи

    Вы можете указать максимальный размер файла для передачи или синхронизации. Вы можете сделать это с опцией «-max-size». Здесь, в этом примере, максимальный размер файла составляет 200 КБ, поэтому эта команда будет передавать только те файлы, которые равны или меньше 200 КБ.

    8. Автоматически удалять исходные файлы после успешной передачи

    Теперь предположим, что у вас есть основной веб-сервер и сервер резервного копирования данных, вы создали ежедневную резервную копию и синхронизировали ее со своим сервером резервного копирования, теперь вы не хотите хранить эту локальную копию резервной копии на своем веб-сервере.< /p>

    Итак, вы будете ждать завершения переноса, а затем вручную удалите этот локальный файл резервной копии? Конечно же нет. Это автоматическое удаление можно выполнить с помощью параметра «–remove-source-files».

    9. Выполните пробный прогон с помощью rsync

    Если вы новичок в использовании rsync и не знаете, что именно будет делать ваша команда. Rsync может действительно испортить вещи в вашей папке назначения, и тогда отмена может стать утомительной работой.

    Использование этой опции не приведет к каким-либо изменениям в файлах и покажет выходные данные команды. Если выходные данные показывают именно то, что вы хотите сделать, вы можете удалить опцию «–dry-run» из своей команды и запустить на терминале.

    10. Rsync Установить ограничение полосы пропускания и передать файл

    Вы можете установить ограничение пропускной способности при передаче данных с одного компьютера на другой с помощью параметра «–bwlimit». Этот параметр помогает нам ограничить пропускную способность ввода-вывода.

    Кроме того, по умолчанию rsync синхронизирует только измененные блоки и байты. Если вы хотите явно синхронизировать весь файл, используйте для него параметр ‘-W’.

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

    Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

    Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

    TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

    Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

    Мы благодарны за вашу бесконечную поддержку.

    Похожие сообщения

    163 мысли о «10 практических примерах использования команды Rsync в Linux»

    Что это за терминал? Красочный, отличный вид. Скриншот первого терминала. Зеленые, красные и т. д.

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

    экспорт PS1="\[\e[32m\][\[\e[m\]\[\e[31m\]\u\[\e[m\]\[\ e[33m\]@\[\e[m\]\[\e[32m\]\h\[\e[m\]:\[\e[36m\]\w\[\e[m\ ]\[\e[32m\]]\[\e[m\]\[\e[32;47m\]\\$\[\e[m\] "

    Rsync в Linux Отлично…

    Для rsync между двумя Linux-компьютерами мне нужно установить rsync на обоих.

    Тогда мне нужно каким-то образом запустить rync на принимающей машине в качестве демона? чтобы он мог проснуться и обработать входящее соединение? Если да, то как мне запустить его в качестве демона? просто rysnc& ??

    Я хочу скопировать файлы из удаленной системы Linux на свой ноутбук с помощью клиента SSH. Я использую XShell для ssh.

    Теперь на моем локальном компьютере, то есть на ноутбуке (Windows10), rsync не установлен. Итак, когда я набрал команду «rsync -avzh [пробел]e:», он говорит, что «rsync» не распознан.

    <р>Так. мой вопрос

    1. Как установить «rsync» в Windows 10?
    2. Можно ли отправлять файлы напрямую из системы Linux с помощью XShell (т. е. ssh) на локальный ноутбук без установки rsync на моем ноутбуке?

    Используйте инструмент WinSCP для Windows, подключитесь к удаленной системе Linux и перенесите файлы в локальную систему Windows.

    Читайте также: