Синхронизация файлов - Rsync
Категория: VDS/VPS Linux
Rsync — очень мощная утилита, которая позволяет:
- синхронизировать данные между между компьютерами в сети, дисками, локальными директориями или виртуальными машинами;
- копировать как отдельные файлы, так и целую структуру каталогов;
- сохранять данные о владельцах файлов, права доступа, время правки и другую служебную информацию;
- cохранять символические и жёсткие ссылки.
Синтаксис
rsync {параметры} {источник} {приемник}
Источник/Приемник
Источник/приемник может быть как локальным там и удаленным.
Ключевое правило
Слеш в конце пути к источнику означает "копировать СОДЕРЖИМОЕ этой директории". Отсутствие слеша означает "копировать САМУ директорию и её содержимое".
Локальный путь
Обычный путь к файлу или директории на текущей машине:
/www/site.com/public_html/ - путь от корня сервера
./wp-content/uploads/ - путь от текущей папки
Удаленный путь
Находится на удаленном сервере.
Формат - {пользователь}@{сервер}:{путь}
Пример - user@255.255.255.255:/data/www/site.com/
Параметры
Основные параметры
-a, --archive - архивный режим, флаг объединяющий сразу несколько других параметров (-rlptgoD).
-n, --dry-run - имитирует работу команды НЕ ВЫПОЛНЯЯ никаких реальных изменений на стороне приемника и демонстрирует в выводе что было бы при реальном выполнение команды без данного параметра.
-v, -vv, -vvv, --verbose - включает подробный вывод результата выполнения. При увеличение v увеличивается уровень детализации. Без данного параметра команды не выведет никаких результатов. Отлично работает с параметром --progress.
--progress - будет отображен процесс для каждого передаваемого файла в реальном времени.
-z, --compress - включает сжатие данных перед отправкой файла по сети. Файлы сжимаются "на лету" на стороне отправителя и распаковываются на стороне получателя.
Не стоит использовать:
при локальном копировании
при передаче уже сжатых файлов
--partial - по умолчанию rsync при прерывании передачи удаляет не до конца переданный файл на "приёмнике", чтобы в следующий раз начать его заново с нуля. С этим параметром "говорит" не удалять частично переданные файлы. В следующий раз он попытается докачать их с того места, где закончил.
--partial-dir={DIR} - более продвинутый и безопасный аналог. rsync будет сохранять частичные файлы не в целевую директорию, а в указанную временную {DIR}.
--bwlimit={RATE} - Жёсткое ограничение скорости передачи данных. Значение указывается в килобайтах в секунду.
--delete - Этот параметр заставляет rsync сделать целевую директорию - идеальной зеркальной копией исходной. Она УДАЛЯЕТ на приёмнике все файлы и папки, которых в источнике нет.
--ignore-existing - rsync будет копировать только те файлы, которых ещё нет на приёмнике. Если файл с данным именем уже существует в цели, он будет проигнорирован, даже если содержимое или метаданные отличаются.
-u, --update - rsync будет копировать файл только в том случае, если файл в источнике новее (по дате изменения), чем файл на приёмнике. Если файл на приёмнике новее или такой же, он будет проигнорирован.
Дополнительные параметры
Входят в параметр -a
-r, --recursive - рекурсивное копирование, без этого параметра будут скопированы только файлы из указанной директории.
-l, --links - сохраняет симлинки как симлинки.
-p, --perms - сохраняет права доступа для файлов и папок.
-t, --times - сохраняет временные метка файлов и папок.
-g, --group - сохранять группу. Файлы будут принадлежать той же группе, что и на источнике.
-o, --owner - сохраняет владельца.
-D - сохранять device files (специальные файлы устройств). Это эквивалентно одновременному использованию --devices --specials.
Примеры
Копировать содержимое папки uploads на удаленный сервер с сохранением исходных данных файлов, сжатием для отправки и подробным отображением процесса
rsync -avz --progress ./uploads/ user@255.255.255.255:/home/data/www/site.com/public_html/wp-content/uploads/
Очистка Docker от ненужных данных: образы, контейнеры, тома и логи
docker volume prune
docker container prune
docker image prune
docker network prune
docker system prune
docker system prune -af
Смена ip серевра в Fastpanel
egrep -rl "10.10.10.10" /etc/ | xargs -i sed -r -i 's/10.10.10.10/20.20.20.20/g' '{}'
2. далее нужно сменить в базе sqllite , но самое простое это с помощью встроенной утилиты:
mogwai change_ip --from=10.10.10.10 --to=20.20.20.20
проверяем конфиги и ребутим