apt install sshpass
чтобы rsync смог работать, нужно зайти через ssh (на который ссылается rsync) в командной строке и принять сертификат
rsync
Re: rsync
информация об исключениях в rsync:
**Исключение файлов и каталогов в rsync**
Rsync предоставляет мощные возможности для исключения определенных файлов и каталогов из процесса синхронизации. Это особенно полезно, когда вы хотите избежать передачи ненужных данных, сэкономить время и пропускную способность сети.
**Основные способы исключения:**
1. **Флаг `--exclude=PATTERN`**:
* Это наиболее распространенный способ исключения. Вы можете использовать этот флаг несколько раз в одной команде rsync.
* `PATTERN` может быть простым именем файла, именем каталога или шаблоном, использующим подстановочные знаки (wildcards).
* Шаблоны соответствуют именам файлов и каталогов относительно исходного пути.
```bash
rsync -av --exclude 'temp/' --exclude '*.log' /source/ /destination/
```
В этом примере:
* Исключается каталог `temp/` из исходного каталога.
* Исключаются все файлы с расширением `.log`.
2. **Флаг `--exclude-from=FILE`**:
* Этот флаг позволяет указать файл, содержащий список исключений.
* Каждая строка в файле представляет собой шаблон исключения, аналогичный `--exclude`.
* Это удобно, когда у вас много исключений или когда исключения организованы в отдельном файле.
```bash
# Файл exclude.txt:
temp/
*.log
cache/
rsync -av --exclude-from='exclude.txt' /source/ /destination/
```
В этом примере rsync будет читать шаблоны исключений из файла `exclude.txt`.
3. **Флаг `--include=PATTERN`**:
* Этот флаг позволяет включать файлы и каталоги, даже если они были исключены другим правилом.
* Правила включения применяются *после* правил исключения. Это означает, что если файл соответствует и правилу исключения, и правилу включения, он будет включен.
* Полезно, когда вы хотите исключить все, кроме нескольких конкретных файлов или каталогов.
```bash
rsync -av --exclude='*' --include='important_file.txt' /source/ /destination/
```
В этом примере:
* `--exclude='*'` исключает все файлы и каталоги.
* `--include='important_file.txt'` включает только файл `important_file.txt`. Обратите внимание на порядок: исключение ставится первым, а включение — после.
4. **Флаг `--filter=RULE`**:
* Этот флаг предоставляет наиболее гибкие возможности фильтрации, используя синтаксис, похожий на синтаксис `rsync` для правил `cvs`.
* `RULE` может начинаться с следующих символов:
* `+`: Включить
* `-`: Исключить
* `!`: Отменить (отменить предыдущее правило)
* `/`: Относительно каталога
* `C`: Категория (не поддерживается в большинстве случаев)
* `T`: Тип файла (не поддерживается в большинстве случаев)
```bash
rsync -av --filter='- temp/' --filter='- *.log' /source/ /destination/
```
Этот пример эквивалентен примеру с `--exclude`.
**Важные замечания и рекомендации:**
* **Порядок имеет значение**: Порядок правил исключения и включения важен. Rsync обрабатывает их последовательно. Обычно, исключения применяются до включений.
* **Относительные пути**: Шаблоны исключений и включений обычно интерпретируются относительно исходного каталога.
* **Подстановочные знаки (wildcards)**: Используйте `*` (любое количество символов), `?` (один символ), `[...]` (диапазон символов) для шаблонов.
* **Слэши в конце**: Если шаблон заканчивается на `/`, он соответствует только каталогу. Например, `temp/` исключит каталог `temp` и все его содержимое. Если убрать `/`, то будет исключен и сам каталог `temp` и файлы с таким именем.
* **Отладка**: Используйте флаг `-n` (dry run) для проверки, какие файлы будут исключены и включены, не выполняя фактическую синхронизацию. Также можно использовать флаг `-v` (verbose) для более подробного вывода информации.
* **Сложные сценарии**: Для очень сложных сценариев фильтрации рекомендуется использовать файл с правилами `--filter` для лучшей читаемости и управления.
* **Безопасность**: Убедитесь, что вы правильно настроили исключения, чтобы не исключить важные данные. Всегда проверяйте результаты с помощью `rsync -n`.
**Примеры более сложных сценариев:**
1. **Исключить все, кроме определенных каталогов:**
```bash
rsync -av --exclude='*' --include='important_dir/' --include='another_dir/' /source/ /destination/
```
В этом примере будут скопированы только каталоги `important_dir` и `another_dir` и их содержимое. Обратите внимание на слэши в конце имен каталогов.
2. **Исключить скрытые файлы и каталоги:**
```bash
rsync -av --exclude '.*' /source/ /destination/
```
Этот пример исключит все файлы и каталоги, начинающиеся с точки (`.`), что обычно включает скрытые файлы и каталоги в Linux/Unix.
3. **Исключить файлы определенного размера:**
```bash
rsync -av --max-size=10M /source/ /destination/
```
Этот пример исключит файлы больше 10 мегабайт. (Также можно использовать `--min-size`.)
4. **Исключить файлы, измененные за последние X дней:**
```bash
rsync -av --max-age=30d /source/ /destination/
```
Этот пример исключит файлы, которые были изменены больше 30 дней назад. (Также можно использовать `--min-age`.)
**Исключение файлов и каталогов в rsync**
Rsync предоставляет мощные возможности для исключения определенных файлов и каталогов из процесса синхронизации. Это особенно полезно, когда вы хотите избежать передачи ненужных данных, сэкономить время и пропускную способность сети.
**Основные способы исключения:**
1. **Флаг `--exclude=PATTERN`**:
* Это наиболее распространенный способ исключения. Вы можете использовать этот флаг несколько раз в одной команде rsync.
* `PATTERN` может быть простым именем файла, именем каталога или шаблоном, использующим подстановочные знаки (wildcards).
* Шаблоны соответствуют именам файлов и каталогов относительно исходного пути.
```bash
rsync -av --exclude 'temp/' --exclude '*.log' /source/ /destination/
```
В этом примере:
* Исключается каталог `temp/` из исходного каталога.
* Исключаются все файлы с расширением `.log`.
2. **Флаг `--exclude-from=FILE`**:
* Этот флаг позволяет указать файл, содержащий список исключений.
* Каждая строка в файле представляет собой шаблон исключения, аналогичный `--exclude`.
* Это удобно, когда у вас много исключений или когда исключения организованы в отдельном файле.
```bash
# Файл exclude.txt:
temp/
*.log
cache/
rsync -av --exclude-from='exclude.txt' /source/ /destination/
```
В этом примере rsync будет читать шаблоны исключений из файла `exclude.txt`.
3. **Флаг `--include=PATTERN`**:
* Этот флаг позволяет включать файлы и каталоги, даже если они были исключены другим правилом.
* Правила включения применяются *после* правил исключения. Это означает, что если файл соответствует и правилу исключения, и правилу включения, он будет включен.
* Полезно, когда вы хотите исключить все, кроме нескольких конкретных файлов или каталогов.
```bash
rsync -av --exclude='*' --include='important_file.txt' /source/ /destination/
```
В этом примере:
* `--exclude='*'` исключает все файлы и каталоги.
* `--include='important_file.txt'` включает только файл `important_file.txt`. Обратите внимание на порядок: исключение ставится первым, а включение — после.
4. **Флаг `--filter=RULE`**:
* Этот флаг предоставляет наиболее гибкие возможности фильтрации, используя синтаксис, похожий на синтаксис `rsync` для правил `cvs`.
* `RULE` может начинаться с следующих символов:
* `+`: Включить
* `-`: Исключить
* `!`: Отменить (отменить предыдущее правило)
* `/`: Относительно каталога
* `C`: Категория (не поддерживается в большинстве случаев)
* `T`: Тип файла (не поддерживается в большинстве случаев)
```bash
rsync -av --filter='- temp/' --filter='- *.log' /source/ /destination/
```
Этот пример эквивалентен примеру с `--exclude`.
**Важные замечания и рекомендации:**
* **Порядок имеет значение**: Порядок правил исключения и включения важен. Rsync обрабатывает их последовательно. Обычно, исключения применяются до включений.
* **Относительные пути**: Шаблоны исключений и включений обычно интерпретируются относительно исходного каталога.
* **Подстановочные знаки (wildcards)**: Используйте `*` (любое количество символов), `?` (один символ), `[...]` (диапазон символов) для шаблонов.
* **Слэши в конце**: Если шаблон заканчивается на `/`, он соответствует только каталогу. Например, `temp/` исключит каталог `temp` и все его содержимое. Если убрать `/`, то будет исключен и сам каталог `temp` и файлы с таким именем.
* **Отладка**: Используйте флаг `-n` (dry run) для проверки, какие файлы будут исключены и включены, не выполняя фактическую синхронизацию. Также можно использовать флаг `-v` (verbose) для более подробного вывода информации.
* **Сложные сценарии**: Для очень сложных сценариев фильтрации рекомендуется использовать файл с правилами `--filter` для лучшей читаемости и управления.
* **Безопасность**: Убедитесь, что вы правильно настроили исключения, чтобы не исключить важные данные. Всегда проверяйте результаты с помощью `rsync -n`.
**Примеры более сложных сценариев:**
1. **Исключить все, кроме определенных каталогов:**
```bash
rsync -av --exclude='*' --include='important_dir/' --include='another_dir/' /source/ /destination/
```
В этом примере будут скопированы только каталоги `important_dir` и `another_dir` и их содержимое. Обратите внимание на слэши в конце имен каталогов.
2. **Исключить скрытые файлы и каталоги:**
```bash
rsync -av --exclude '.*' /source/ /destination/
```
Этот пример исключит все файлы и каталоги, начинающиеся с точки (`.`), что обычно включает скрытые файлы и каталоги в Linux/Unix.
3. **Исключить файлы определенного размера:**
```bash
rsync -av --max-size=10M /source/ /destination/
```
Этот пример исключит файлы больше 10 мегабайт. (Также можно использовать `--min-size`.)
4. **Исключить файлы, измененные за последние X дней:**
```bash
rsync -av --max-age=30d /source/ /destination/
```
Этот пример исключит файлы, которые были изменены больше 30 дней назад. (Также можно использовать `--min-age`.)