Копирование файлов и папок через rsync

Полезные команды rsync. Копирование файлов и папок через rsync

Настройка ssh

Пропишите конфиг ssh /root/.ssh/config на клиенте (откуда будете копировать файл)

Host *
	Protocol 2
	KeepAlive yes
	TCPKeepAlive yes
	ServerAliveInterval 5
	ServerAliveCountMax 100
	Compression no
	#CompressionLevel 9
	#ForwardX11 yes
	UseRoaming no

Host server
	Hostname server
	User root
	Port 22

Компрессию нужно выключить. Она грузит процессор.

Вместо server укажите hostname сервера.

Если на клиенте нет файла /root/.ssh/id_rsa.pub, создайте его командой

ssh-keygen

Пароль указывать необязательно

Скопируйте содержимое файла /root/.ssh/id_rsa.pub с клиента на сервер

ssh-copy-id server

либо можно скопировать вручную содержимое файла /root/.ssh/id_rsa.pub с клиента и добавить новую строчку в файл на сервере /root/.ssh/authorized_keys

cat /root/.ssh/id_rsa.pub

В настройках ssh сервера в файле /etc/ssh/sshd_config укажите значение

PermitRootLogin prohibit-password

Оно позволяет подключаться по root пользователем только по ключу

Копирование большого файла

Данная команда скопирует файл из локальной папки на другой сервер, при этом, она проверит целостность скопированного файла.

rsync -a --append-verify --progress ./big.file.zip server:/data/files

Синхронизация папки

Запустите в screen или tmux команду:

time rsync -aSsuh --info=progress2 --numeric-ids --delete-before --bwlimit=6400 source-folder1/ server:/dest-folder2/

source-folder1 – это откуда
dest-folder2 – это куда

Последний слэш обязателен

time – выведет сколько времени заняла эта команда

Ключи:
-a – Архив -rlptgoD. Копирование рекурсивное, симлинков, прав и владельца файлов и папок, времени модификации.
-S – оптимизация передачи разреженных файлов, например, состоящих из нулей
-s – защита от пробелов в файле
-u – не обновлять файлы на получателе если они новее
-h – выводить цифры в человеко-читаемом формате
--info=progress2 – Выводит суммарный прогресс
--numeric-ids - Сохранять цифровые ID
--delete-before - Удаляет папки, которых нет в источнике

Также можно добавить:
-W – копировать файлы целиком
-z – Сжатие
-P – выводить прогресс на экран пофайлово
-B=131072 - Фиксированные блоки для вычисления хэшсуммы
--delete - Удалять файлы в папке назначения, если их нет в исходной папке
--bwlimit - limit I/O bandwidth; KBytes per second (6400 - Ограничение скорости в 50 Mbit/sec или 6,25 MByte/sec)
--numeric-ids - Использовать ID владельца файла