Копирование файлов и папок через 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 владельца файла