Команда Linux sync
синхронизирует кэшированные операции записи указанного файла (файлов) или файловой системы с постоянным хранилищем.
Содержание
Введение
Синхронизируемые данные включают в себя модифицированные суперблоки, модифицированные индексные дескрипторы, отложенные операции чтения и записи и другие. Утилита использует несколько системных вызовов:
- sync()/
- syncfs();
- fsync();
- fdatasync().
Например, команда sync
использует системный вызов sync()
для записи всех буферизованных изменений данных и метаданных файла на базовое устройство хранения.
Для системного администратора или разработчика Linux понимание команды синхронизации может иметь решающее значение для эффективной синхронизации файлов. Кроме того, синхронизация может быть полезна после сбоя или повреждения файловой системы.
В статье будут рассмотрены различные аспекты команды синхронизации, а также будет показано использование синхронизации в различных сценариях.
Синтаксис
$ sync [ПАРАМЕТР] [ФАЙЛ]…
Параметры
- -d, --data
- Синхронизировать только данные файла, игнорировать ненужные метаданные
- -f, --file-system
- Синхронизировать файловые системы, в которых находятся файлы
- --help
- Показать эту справку и выйти
- --version
- Показать информацию о версии и выйти
Примеры использования команды Linux sync
Синхронизация целых файловых систем
Обычно для синхронизации текущей файловой системы команда синхронизации запускается без каких-либо опций:
$ sync
При запуске синхронизации с привилегиями sudo
она синхронизирует все смонтированные системы:
$ sudo sync
Синхронизация гарантирует сброс всех ожидающих операций записи на базовые устройства хранения.
Синхронизация определённых файлов
Для синхронизации определённых файлов или каталогов следует указывать их в качестве аргумента:
$ sync /path/to/file1 /path/to/file2
Синхронизируемые файлы могут находиться в одном или разных каталогах.
Синхронизация только данных файла
При необходимости синхронизировать лишь контент, например, для повышения производительности используется опция -d
:
$ sync -d
Использование опции -d
позволит избежать ненужных обновлений метаданных.
Синхронизация определённого каталога
Если мы хотим синхронизировать весь каталог вместе с его содержимым, то для этого мы указываем путь к каталогу в качестве аргумента:
$ sync /path/to/directory
Команда выполнившая синхронизацию указанного каталога также проверяет, все ли изменения внутри него записываются в хранилище.
Синхронизация файловой системы с определённым файлом
При необходимости синхронизации файловой системы, содержащей определённый файл, используется опция -f
:
$ sync -f /path/to/file
Утилита выполнила синхронизацию файловой системы, содержащей данный файл и невозникла необходимость в поиске объекта файловой системы перед запуском утилиты.
Заключение
В статье были рассмотрены аспекты синхронизации всех файловых систем, определённых файлов, каталогов и файловых систем, содержащих файлы. Понимание и эффективное использование в Linux команды синхронизации sync
важно начинающим системным администраторам.