Введение
Rsync означает «удаленная синхронизация», это инструмент для локальной и удаленной синхронизации файлов и папок. Он использует алгоритм, который минимизирует объем скопированных данных, перемещая только те части файлов, которые были изменены. В этом руководстве мы рассмотрим основные способы использования этой мощной утилиты.
В примерах мы будем использовать VPS с Ubuntu 18.04 LTS, но можно использовать любой современный дистрибутив Linux.
Rsync — очень гибкий инструмент синхронизации с поддержкой сети. Из-за его повсеместного распространения в системах Linux и Unix и его популярности в качестве инструмента системных сценариев он включен в большинство дистрибутивов Linux по умолчанию.
Если вы намерены использовать Rsync на удаленном сервере, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и прочитайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется пароль для аутентификации.
Чтобы подключиться к серверу как root, введите эту команду:
ssh root@IP_DEL_SERVER
Далее вам будет предложено ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить первый параметр:
ssh VOSTRO_UTENTE@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Теперь вы подключены к вашему серверу.
Как использовать Rsync
Базовый синтаксис rsync очень прост и работает аналогично ssh, scp и cp. Мы создадим два тестовых каталога и несколько тестовых файлов с помощью следующих команд: Перейдем к дому:
cd ~
Создайте папку с именем dir1:
mkdir dir1
Создайте еще одну папку с именем dir2:
mkdir dir2
Создайте 100 файлов в папке dir1;
touch dir1/file{1..100}
Чтобы просмотреть все созданные файлы:
ls dir1
Чтобы синхронизировать содержимое dir1 с dir2 в той же системе, введите:
rsync -r dir1/dir2
Параметр -r означает рекурсивный, что требуется для синхронизации каталогов. Вместо этого мы могли бы также использовать флаг -a:
rsync -a dir1/dir2
Параметр -a является флагом, представляющим « архив », и рекурсивно синхронизирует и сохраняет символические ссылки, специальные файлы и файлы устройств, время модификации, группу, владельца и разрешения. Он используется чаще, чем -r.
Возможно, вы заметили, что в конце первого аргумента в приведенных выше командах есть косая черта ( / ) в конце первого аргумента: rsync -a dir1 ** /** dir2 Это необходимо для обозначения « содержимого dir1 ».
В качестве альтернативы, без завершающей косой черты, каталог dir1 вместе с каталогом помещается внутрь каталога dir2.
Всегда проверяйте флаги перед запуском команды rsync. Rsync предоставляет метод тестирования путем передачи параметров -n или --dry-run. Флаг -v (для подробных сведений) также полезен для просмотра вывода команды.
Как использовать Rsync для синхронизации с удаленной системой
Синхронизация с удаленной системой проста, если у вас есть SSH-доступ к удаленной машине и rsync установлен на обоих серверах.
Чтобы передать файл или папку с локального компьютера на удаленный сервер, используйте следующий синтаксис:
rsync -avzh /path/computer/locale/esempio.txt nome_utente@indirizzo_remoto:/path/server/remoto/
Это называется операцией " push ", потому что она отправляет каталог из локальной системы в удаленную систему.
Противоположная операция — « вытягивание ». Он используется для синхронизации удаленного каталога с локальной системой:
rsync -avzh nome_utente@indirizzo_remoto:/path/server/remoto//path/computer/locale
Если удаленный сервер использует нестандартный порт ssh, добавьте следующий параметр: ssh -p PORT и флаг -e. Итак, чтобы сделать бэкап с удаленного сервера на локальный, с нестандартным портом:
rsync -avzhe "ssh -p PORTA" nome_utente@indirizzo_remoto:/path/server/remoto//path/computer/locale
( НЕ рекомендуется по соображениям безопасности) Чтобы ввести пароль для доступа по ssh этой же командой, без необходимости писать его позже, установите следующее программное обеспечение:
sudo apt-get install sshpass
Следовательно:
sshpass -p "PASSWORD" rsync -avzhe "ssh -p PORTA" nome_utente@indirizzo_remoto:/path/server/remoto//path/computer/locale
Полезные опции для Rsync
Rsync предлагает множество вариантов изменения поведения утилиты по умолчанию. Если вы передаете файлы, которые еще не были сжаты, например текстовые файлы, вы можете добавить сжатие с параметром -z:
rsync -az sorgente destinazione
Флаг -P очень полезен. Объедините флаги --progress и --partial. Первый из них обеспечивает индикатор выполнения передачи, а второй позволяет возобновить прерванную передачу:
rsync -azP sorgente destinazione
Мы можем обновить время модификации некоторых файлов и увидеть, что rsync интеллектуально повторно копирует только измененные файлы:
rsync -azP sorgente destinazione
Чтобы действительно синхронизировать два каталога, файлы должны быть удалены из целевого каталога, если они удалены из источника. По умолчанию rsync ничего не удаляет из целевого каталога. Мы можем изменить это поведение с помощью параметра --delete. Прежде чем использовать эту опцию, используйте опцию --dry-run и проверьте, чтобы предотвратить потерю данных:
rsync -a --delete sorgente destinazione
Если вы хотите исключить определенные файлы или каталоги, расположенные в каталоге, который вы синхронизируете, вы можете сделать это, указав их в списке, разделенном запятыми, следуя параметру --exclude =:
rsync -a --exclude=file_da_escludere sorgente destinazione
Если мы указали шаблон для исключения, мы можем переопределить это исключение для файлов, соответствующих другому шаблону, используя параметр --include =.
rsync -a --exclude=file_da_escludere --include=file_da_includere sorgente destinazione
Наконец, параметр --backup rsync можно использовать для архивирования резервных копий важных файлов. Он используется в сочетании с параметром --backup-dir, который указывает каталог, в котором должны храниться файлы резервных копий.
rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destinazione
Некоторые полезные флаги:
- -a для архива, который содержит свойства, разрешения и т. д.
- -e требуется при указании используемого протокола, например ssh.
- -v для подробностей, чтобы я мог видеть, что происходит. (по желанию)
- -h читается человеком, поэтому скорость передачи и размер файла легче читать. (по желанию)
- -W предназначен только для копирования файлов целиком, без алгоритма delta-xfer, который должен снизить нагрузку на ЦП.
- --progress, чтобы вы могли видеть прогресс больших файлов. (по желанию)
Вывод
Rsync может упростить передачу файлов по сетевым подключениям и повысить надежность синхронизации локальных каталогов. Гибкость rsync делает его хорошим вариантом для многих различных операций на уровне файлов. Мастерство rsync позволяет вам разрабатывать сложные операции резервного копирования и получать точный контроль над тем, что и как передается.
В этом уроке мы увидели, как использовать Rsync.