<===
2025-09-17 18:46:29
Для того чтобы "отзеркалить" содержимое `/mnt/disk1` на `/mnt/disk2` с помощью `rsync`, то есть сделать `/mnt/disk2` максимально идентичной копией `/mnt/disk1` (включая удаление файлов на `/mnt/disk2`, которых нет в `/mnt/disk1`), нужно использовать комбинацию опций, обеспечивающих полную синхронизацию. При этом важно сохранить все атрибуты файлов, права, временные метки, жесткие и символические ссылки, ACL, расширенные атрибуты и т.д.
### Требования для "зеркалирования":
1. Копировать все файлы и директории из `/mnt/disk1` в `/mnt/disk2`.
2. Удалять файлы в `/mnt/disk2`, которых нет в `/mnt/disk1`.
3. Сохранять все метаданные (права, владельцев, временные метки, ссылки и т.д.).
4. Убедиться, что содержимое идентично (по содержимому или метаданным, в зависимости от ваших предпочтений).
### Рекомендуемая команда:
Для максимальной идентичности и зеркалирования используйте следующую команду:
rsync -aHAXxv --numeric-ids --progress --delete --checksum /mnt/disk1/ /mnt/disk2/
### Разбор опций:
- `-a` (archive): включает рекурсивное копирование, сохранение прав, временных меток, символических ссылок, владельцев и групп.
- `-H` (hard-links): сохраняет жесткие ссылки.
- `-A` (acls): сохраняет списки контроля доступа (ACL).
- `-X` (xattrs): сохраняет расширенные атрибуты.
- `-x` (one-file-system): предотвращает переход за пределы файловой системы `/mnt/disk1`.
- `-v` (verbose): выводит подробную информацию о процессе.
- `--numeric-ids`: сохраняет числовые ID пользователей и групп (полезно при зеркалировании между системами).
- `--progress`: показывает прогресс копирования.
- `--delete`: удаляет файлы в `/mnt/disk2`, которых нет в `/mnt/disk1` (ключ для зеркалирования).
- `--checksum`: сравнивает файлы по их содержимому (хеш-суммам), чтобы гарантировать идентичность, даже если время модификации совпадает.
### Важные замечания:
1. **Опция `--delete`**: Эта опция критически важна для зеркалирования, так как она удаляет файлы в целевой директории (`/mnt/disk2`), которых нет в исходной (`/mnt/disk1`). Будьте осторожны, так как это может привести к потере данных в `/mnt/disk2`.
2. **Проверка перед выполнением**: Рекомендуется сначала выполнить команду с `--dry-run` для просмотра изменений без их применения:
```bash
rsync -aHAXxv --numeric-ids --progress --delete --checksum --dry-run /mnt/disk1/ /mnt/disk2/
```
3. **Производительность**: Опция `--checksum` замедляет процесс, так как вычисляет хеши для каждого файла. Если вы уверены, что сравнение по времени модификации и размеру достаточно, можно убрать `--checksum`:
```bash
rsync -aHAXxv --numeric-ids --progress --delete /mnt/disk1/ /mnt/disk2/
```
4. **Синтаксис пути**: Слэш (`/`) в конце `/mnt/disk1/` указывает `rsync` копировать содержимое директории, а не саму директорию. Это важно для правильного зеркалирования.
5. **Права доступа**: Убедитесь, что у пользователя, выполняющего команду, есть права на чтение `/mnt/disk1` и запись/удаление в `/mnt/disk2`. Возможно, потребуется запуск с `sudo`:
```bash
sudo rsync -aHAXxv --numeric-ids --progress --delete --checksum /mnt/disk1/ /mnt/disk2/
```
### Дополнительные рекомендации:
- **Исключение файлов**: Если нужно исключить определенные файлы или директории (например, временные файлы), добавьте опцию `--exclude`:
```bash
rsync -aHAXxv --numeric-ids --progress --delete --checksum --exclude '*.tmp' /mnt/disk1/ /mnt/disk2/
```
- **Логирование**: Для отслеживания изменений можно добавить опцию `--log-file`:
```bash
rsync -aHAXxv --numeric-ids --progress --delete --checksum --log-file=/path/to/logfile.log /mnt/disk1/ /mnt/disk2/
```
### Итог:
Команда выше (`rsync -aHAXxv --numeric-ids --progress --delete --checksum /mnt/disk1/ /mnt/disk2/`) обеспечивает полное зеркалирование `/mnt/disk1` на `/mnt/disk2` с сохранением всех атрибутов и удалением лишних файлов. Для проверки используйте `--dry-run`, а для ускорения можно убрать `--checksum`, если сравнение по содержимому не требуется.