cp progress ( rsync ) Резервное копирование

Ответить
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

cp progress ( rsync ) Резервное копирование

Сообщение ya »

rsync -vh --progress source-file destination-file

Код: Выделить всё

rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
Последний раз редактировалось ya 10 май 2024, 09:03, всего редактировалось 2 раза.
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Использование rsync для выполнения регулярного резервного копирования

Сообщение ya »

Использование rsync для выполнения регулярного резервного копирования

Код: Выделить всё

#/bin/bash 
CURDATE=$(date +%m-%d-%Y) 
if [ ! -f /usr/bin/rsync ]; then 
    sudo apt install -y rsync 
fi 
rsync -avb --delete --backup-dir=/backup/incremental/$CURDATE /src /target
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Различные примеры использования команды rsync

Сообщение ya »

Различные примеры использования команды rsync
Команда rsync не требует привилегий root и может быть запущена любым пользователем системы. Основной синтаксис команды rsync выглядит следующим образом:
bash

Код: Выделить всё

# rsync [option] [source] [destination]
Некоторые важные опции:
--progress отображает процесс копирования
-v: подробный вывод
-z: сжимать данные файла
-h: человекочитаемый вывод
-a: архивировать файлы и каталоги при копировании
--whole-file: отключает деление файла на блоки, что может ускорить передачу для локальных
-W: аналогично --whole-file, ускоряет копирование больших файлов
--no-compress: отключает сжатие данных, что полезно при локальной передаче, чтобы избежать накладных расходов на сжатие.
-l, --links: копировать символические ссылки как символические ссылки
-r, --recursive recurse into directories
-e, --rsh=COMMAND указывают удаленную оболочку для использования

rsync по умолчанию меняет дату создания и изменения файлов при копировании. Чтобы этого избежать, нужно использовать опцию --times
Последний раз редактировалось ya 10 май 2024, 09:01, всего редактировалось 1 раз.
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Копирование/синхронизация каталогов rsync

Сообщение ya »

Копирование/синхронизация каталогов локально с помощью команды rsync

Код: Выделить всё

# rsync -r /source/dirctory/ /destination/directory
Команда rsync для копирования/синхронизации файлов с локального на удаленный сервер Linux

Код: Выделить всё

# rsync -zvh  /local/directory/file user@remote_host:/remote/directory
Команда rsync для копирования/синхронизации файлов с удаленного на локальный сервер Linux

Код: Выделить всё

# rsync -zvh user@remote_host:/source/directory/file /local/directory
Использование SSH для передачи данных с помощью команды rsync

Код: Выделить всё

# rsync -zvhe ssh user@destination_host:/directory/file /source/path/file
Команда rsync для установки максимального размера файла при передаче файлов
Параметр --max-size позволяет указать максимальный размер файла, который будет скопирован или синхронизирован. Файл, превышающий максимальный размер, не будет передан. Вы можете использовать K для KB, M для MB и G для GB.

Код: Выделить всё

# rsync -zavh --max-size=num K filename /destination/directory
Команда rsync для установки ограничения пропускной способности для передачи файлов
С помощью опции --bwlimit можно установить ограничение пропускной способности для передачи данных.

Код: Выделить всё

# rsync -zvh --bwlimit=5 /source/directoy/file user@remote_host:/destination/directory
Отображение подробностей выполнения команды rsync
Вы можете использовать опцию --progress, чтобы просмотреть детали процесса копирования/синхронизации в выходных данных.

Код: Выделить всё

# rsync -zvh --progress /source/directoy/ user@remote_host:/destination/directory
Удалите исходный файл после копирования с помощью команды rsync
Иногда вы можете захотеть удалить исходный файл после того, как он будет скопирован в другое место. Для этого можно использовать опцию --remove-source-files

Код: Выделить всё

# rsync -zavh --remove-source-files /source/directory/ user@remote_host:/destination/directory
Исключение файлов при копировании с помощью команды rsync
Параметр --exclude позволяет исключить определенные файлы из каталога при копировании.

Код: Выделить всё

# rsync -zavh  --exclude 'file to exclude' /source/directory/ user@remote_host:/destination/directory
Команда rsync для отображения изменений после передачи файла
Вы можете использовать опцию -i или --itemize-changes, чтобы просмотреть список изменений, внесенных в файлы или каталоги между исходным и конечным Linux-сервером.

Код: Выделить всё

# rsync -zavhi  /source/directory/ user@remote_host:/destination/directory

Код: Выделить всё

# rsync -zavh --itemize-changes  /source/directory/ user@remote_host:/destination/directory
Список файлов внутри каталога с помощью команды rsync

Код: Выделить всё

# rsync user@remote_host:/destination/directory/
Команда rsync для сохранения владельца после передачи файла
Обычно при копировании файла с помощью rsync владелец копируемого файла может измениться в зависимости от места назначения. Если вы хотите сохранить того же владельца, что и у исходного файла, вы можете использовать опцию -o или --owner

Код: Выделить всё

# rsync -zvho /source/directory/file destination/directory
Команда rsync для сохранения группы после передачи файла
Вы также можете сохранить групповую принадлежность исходного файла для копирования с помощью опции -g или --group.

Код: Выделить всё

# rsync -zvhg /source/directory/file /destination/directory
Удаление файла в каталоге назначения с помощью команды rsync
Во время синхронизации вы можете удалить файл, если он присутствует в каталоге назначения, но не существует в источнике. Параметр --delete удаляет файлы, которых нет в исходном каталоге.

Код: Выделить всё

# rsync -zavh --delete /source/directory/ user@remote_host:/destination/directory
Выполните пробный запуск команды rsync
Опция -n или --dry-run позволяет выполнить пробный запуск команды rsync. Она не вносит никаких изменений, но выдает тот же результат, что и при реальном запуске. Это может быть полезно, если вы хотите узнать, что будет делать команда rsync после ее реального выполнения.

Код: Выделить всё

# rsync -zavh -n user@remote_host:/source/directory/ /destination/directory

Код: Выделить всё

# rsync -zavh --dry-run user@remote_host:/source/directory/ /destination/directory
Команда rsync для пропуска синхронизации несуществующих файлов
Эта команда используется для того, чтобы не создавать файлы или каталоги, которые не существуют в каталоге назначения. Она обновит только те файлы или каталоги, которые уже присутствуют в каталоге назначения.

Код: Выделить всё

# rsync -zavh --existing /source/directory/ user@remote_host:/destination/directory

Код: Выделить всё

# rsync -zavh --ignore-non-existing /source/directory/ user@remote_host:/destination/directory
Команда rsync для пропуска синхронизации существующих файлов
Опция --ignore-existing поможет вам пропустить обновление файлов, которые уже присутствуют в каталоге назначения. Она не влияет на существующие каталоги.

Код: Выделить всё

# rsync -zavh --ignore-existing /source/directory/ user@remote_host:/destination/directory
Копирование файла с символической ссылкой с помощью команды rsync
Обычно rsync копирует файл-референт файла символической ссылки. Чтобы скопировать/синхронизировать символьную ссылку в другое место, следует использовать опцию -l.

Код: Выделить всё

# rsync -zavh -l /source/directory/file user@remote_host:/destination/directory
Команда rsync для рекурсивного копирования каталогов
Опция -r или --recursive указывает rsync на рекурсивное копирование/синхронизацию каталога. Все его файлы и подкаталоги будут скопированы в целевое место.

Код: Выделить всё

# rsync -zavh -r /source/directory/ user@remote_host:/destination/directory

Код: Выделить всё

# rsync -zavh --recursive /source/directory/ user@remote_host:/destination/directory
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: cp progress ( rsync ) Резервное копирование

Сообщение ya »

Для работы rsync, обязательно надо чтобы он был установлен на обоих хостах: источник и получатель

sudo apt-get install sshpass

/usr/bin/rsync -ratlz --rsh="/usr/bin/sshpass -p password ssh -o StrictHostKeyChecking=no -l username" src_path dest_path


Запустите ssh-keygen
Он попросит указать путь к файлу ключа, ввести ключевую фразу и повторить ту же фразу. Ответьте на все три вопроса, просто нажав Enter (принимая значения по умолчанию).

Запустите ssh-copy-id -i ~/.ssh/id_rsa.pub <удаленный хост>.
Путь ~/.ssh/id_rsa.pub к файлу открытого ключа может быть другим, если вы выбрали другой путь в шаге 1. Замените <remote-host> на IP-адрес или имя хоста удаленного узла, на котором вы хотите войти в систему.

Код: Выделить всё

rsync --partial --progress --rsh="ssh -i dsa_private_file" host_name@host:/home/me/d .

Код: Выделить всё

sshpass -p "password" rsync -ae "ssh -p remote_port_ssh" /local_dir  remote_user@remote_host:/remote_dir
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: cp progress ( rsync ) Резервное копирование

Сообщение ya »

Код: Выделить всё

rsync -rh --progress devuan-4G.original.qcow2 devuan-4G.001.qcow2
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: cp progress ( rsync ) Резервное копирование

Сообщение ya »

Чтобы увеличить скорость передачи данных при синхронизации с помощью rsync через локальный диск, можно применить следующие рекомендации:

1. Используйте флаги для повышения производительности:
- `--whole-file` — отключает деление файла на блоки, что может ускорить передачу для локальных копирований.
- `-W` — аналогично `--whole-file`, ускоряет копирование больших файлов.
2. Отключите или уменьшите использование проверки целостности:
- `--no-compress` — отключает сжатие данных, что полезно при локальной передаче, чтобы избежать накладных расходов на сжатие.
- `--checksum` — избегайте использования, так как она требует чтения обоих файлов полностью для сравнения, что замедляет процесс.
3. Используйте быстрый вывод прогресса:
- `--progress` — показывает прогресс, но не влияет на скорость, однако можно выключить его, если не нужен.
4. Минимизируйте нагрузку на систему:
- Используйте `--bwlimit` для ограничения пропускной способности, если нужно сбалансировать нагрузку.
5. Параллельная Передача:
- Для увеличения скорости можно запускать несколько потоков rsync для разных частей данных или каталогов, например, через `parallel`.
6. Используйте более быстрый файловый системный кэш:
- Перед запуском убедитесь, что кэш диска и системы в порядке.
7. В случае использования SSD дисков — убедитесь, что они не работают в режиме ограничения, и подключены к быстрым портам.
8. Вырежьте ненужные процессы:
- Отключите антивирусы, бэкапы и другие процессы, которые могут замедлять работу дисков.
9. Проверьте состояние дисков:
- Используйте `smartctl` или аналогичные инструменты, чтобы убедиться, что диски работают исправно.
Пример команды, оптимизированной для локальной передачи:
```bash
rsync -aW --no-compress /источник/ /назначение/
```
или
```bash
rsync -aW --no-compress --progress /источник/ /назначение/
```

Если передача всё равно медленная, попробуйте проверить диск на наличие ошибок и убедитесь, что он не загружен другими процессами.
ya
^-^
Сообщения: 2535
Зарегистрирован: 16 дек 2021, 19:56

Re: cp ( scp ) progress ( rsync ) Резервное копирование

Сообщение ya »

Код: Выделить всё

rsync -arh --no-compress --progress --times /источник/ftp3/ /получатель/ftp/
Скопировать файл my_file.txt на сервер myhost.example.com в домашнюю директорию пользователя john:

Код: Выделить всё

scp my_file.txt john@myhost.example.com:/home/john/
-a: Архивный режим (сохраняет атрибуты файла, включая права доступа, время модификации и т.д.).
-v: Подробный вывод.
-z: Сжатие данных для уменьшения трафика.
-r: (рекурсивно): Если вы хотите скопировать не только сам файл, но и все вложенные каталоги
Ответить