Преимущества rsync
rsync
умеет копировать и синхронизировать файлы с локальной машины на удалённую – и наоборот;
- поддерживает копирование ссылок, файлов устройств, данные о владельцах, группах и права доступа;
rsync
работает быстрее, чем scp
, потому
что использует специальный протокол удалённого обновления, который
позволяет передавать данные только об изменившихся файлах: первый раз
копируется полное содержимое файла или директории, но при следующем
копировании – rsync
копирует только изменившиеся блоки данных;
rsync
использует меньше пропускной способности канала передачи данных, т.к. использует компрессию и декомпрессию данных;
Базовый синтаксис:
Наиболее полезные опции rsync:
-v
– подробный режим;
-r
– копировать данные рекурсивно (но без сохранения инфомрации о времени изменения файлов и правах доступа);
-a
– режим архивирования, позволяет копировать данные
рекурсивно с сохранением симлинков, правах доступа на файлы/каталоги и
другую информацию);
-z
– сжатие данные;
-h
– вывод данных в
human-readable формате.
Установка rsync
RedHat/CentOS:
Debian/Ubuntu:
Копирование и синхронизация данных локально
С помощью следующей команды будут скопированы или синхронизированы все файлы из одной директории в другую на одном хосте.
2 | sending incremental file list |
6 | sent 96 bytes received 35 bytes 52.40 bytes/sec |
7 | total size is 0 speedup is 0.00 |
3 | drwxr-xr-x 2 root root 4096 Sep 19 14:41 fristdir |
Копирование и синхронизация данных на или с удалённого сервера
Копирование локальных файлов на удалённый хост:
2 | root@10.249.140.239's password: |
3 | sending incremental file list |
7 | sent 96 bytes received 35 bytes 29.11 bytes/sec |
8 | total size is 0 speedup is 0.00 |
На обоих хостах должен быть установлен rsync.
Копирование с удалённого хоста на локальный.
На удалённом хосте создадим файл:
Копируем:
2 | root@10.249.140.239's password: |
3 | receiving incremental file list |
7 | sent 34 bytes received 112 bytes 41.71 bytes/sec |
8 | total size is 0 speedup is 0.00 |
Использование rsync по SSH
Что бы указать
rsync
, какой протокол использовать – используйте опцию
-e
:
02 | opening connection using: ssh -l root 10.249.140.239 rsync --server -vvlogDtprze.iLs . /root/ |
03 | root@10.249.140.239's password: |
04 | sending incremental file list |
05 | delta-transmission enabled |
09 | total: matches=0 hash_hits=0 false_alarms=0 data=0 |
11 | sent 147 bytes received 54 bytes 44.67 bytes/sec |
12 | total size is 0 speedup is 0.00 |
Отображение строки прогресса передачи данных
С помощью опции
--progress
можно вывести больше инфомармации о том, как происходит передача (скорость, количество переданных и оставшихся байт, время):
02 | root@10.249.140.239's password: |
03 | sending incremental file list |
06 | 0 100% 0.00kB/s 0:00:00 (xfer |
08 | 0 100% 0.00kB/s 0:00:00 (xfer |
10 | sent 147 bytes received 54 bytes 44.67 bytes/sec |
11 | total size is 0 speedup is 0.00 |
Опции –include и –exclude
С помощь
-–include
и
-–exclude
можно указать, какие файлы и/или директории включить в передачу, а какие – исключить.
Например – передадим только
file1
:
2 | root@10.249.140.239's password: |
3 | sending incremental file list |
7 | sent 100 bytes received 35 bytes 38.57 bytes/sec |
8 | total size is 0 speedup is 0.00 |
Опция –delete
--delete
используется в том случае, если в каталоге назначения есть файлы и/или диреткории, которых нет в источнике, и их надо удалить.
Например, в каталоге назначения создадим файл:
Тогда как в каталоге-источнике у нас будут:
Теперь выполняем синхронизацию с опцией
--delete
:
2 | root@10.249.140.239's password: |
3 | sending incremental file list |
8 | sent 115 bytes received 35 bytes 42.86 bytes/sec |
9 | total size is 0 speedup is 0.00 |
deleting firstdir/file3
– файл был удалён:
Максимальный размер файлов для передачи
rsync
может принимать опцию
--max-size
, с помощью которой можно указать максимальный размер файла, который будет передан.
Например, создадим файл размером 100МБ:
4 | 0 bytes (0 B) copied, 9.9066e-05 s, 0.0 kB/s |
И выполним передачу, ограничив размер файла 50МБ:
2 | root@10.249.140.239's password: |
3 | sending incremental file list |
8 | sent 173 bytes received 54 bytes 64.86 bytes/sec |
9 | total size is 104.86M speedup is 461927.75 |
Удаление исходных данных после передачи
С помощью опции
--remove-source-files
можно удалить данные после выполнения копирования или синхронизации.
К примеру – у нас есть директория:
Выполняем копирование:
2 | root@10.249.140.239's password: |
3 | sending incremental file list |
8 | sent 147 bytes received 54 bytes 44.67 bytes/sec |
9 | total size is 0 speedup is 0.00 |
И проверяем исходный каталог:
Опция Dry Run – “холостой запуск”
С помощью опции
--dry-run
можно выполнить только проверку того, как будет выполнена задача, но без реальной передачи данных.
Это может полезным, например, для проверки различий между локальной и удалённой копией данных.
К примеру:
2 | root@10.249.140.239's password: |
3 | sending incremental file list |
8 | sent 81 bytes received 22 bytes 29.43 bytes/sec |
9 | total size is 0 speedup is 0.00 (DRY RUN) |
И проверяем удалённый каталог:
Ограничение скорости I/O
Что бы ограничить скороксть передачи – можно использовать опцию
--bwlimit
, которая задаёт лимит скорости чтения с диска (и, соотвественно, передачи) в килобайтах/секунду.
Например, создадим файл:
4 | 0 bytes (0 B) copied, 5.8089e-05 s, 0.0 kB/s |
И запустим передачу:
2 | root@10.249.140.239's password: |
4 | 10485760 100% 99.33kB/s 0:01:42 (xfer |
6 | sent 10487112 bytes received 31 bytes 98470.83 bytes/sec |
7 | total size is 10485760 speedup is 1.00 |
Полное копирование данных
По-умолчанию,
rsync
копирует только изменившиеся блоки данных.
Что бы выполнить полное копирование – используйте опцию
-W
:
02 | root@10.249.140.239's password: |
04 | 10485760 100% 138.85MB/s 0:00:00 (xfer |
06 | sent 13052 bytes received 19501 bytes 7234.00 bytes/sec |
07 | total size is 10485760 speedup is 322.11 |
08 | 14:10:02 [root@zeus ~/firstdir] |
09 | root@10.249.140.239's password: |
11 | 10485760 100% 28.48MB/s 0:00:00 (xfer |
13 | sent 10487112 bytes received 31 bytes 2330476.22 bytes/sec |
14 | total size is 10485760 speedup is 1.00 |
Обратите внимание на разницу в поле
sent
между вызовами с и без опции
-W
.
Комментариев нет:
Отправить комментарий