Загрузка...

Rsync: мощный инструмент для копирования и синхронизации файлов

rsync

Rsync – это мощная консольная утилита и служба, предназначенная для быстрого копирования и синхронизации файлов. Её главное преимущество – высокая скорость сравнения директорий, даже если они содержат огромное количество файлов. Например, если вам нужно синхронизировать два удалённых хранилища с миллионами файлов, rsync справится с этой задачей лучше многих других инструментов. Однако у него есть один существенный недостаток – он работает в однопоточном режиме.

Лично я часто использую rsync для создания бэкапов, особенно когда нужно копировать файлы “как есть”, без упаковки, сжатия или дедупликации. В этой статье я хочу поделиться некоторыми полезными ключами rsync, которые, возможно, не все знают и используют.


🔴 Ключи --backup и --backup-dir

При синхронизации источника и приёмника rsync может привести приёмник в точное соответствие с источником. Однако в случае с бэкапами часто требуется сохранить изменённые файлы, а не просто перезаписать их. Для этого можно использовать ключи --backup и --backup-dir.

Пример команды:

/usr/bin/rsync -av --progress --delete back_user@10.20.5.22:/var/lib/pgpro/backup/ /mnt/data/backup/bases --backup --backup-dir=/mnt/data/backup/bases_increment/`date +%Y-%m-%d`/ >> /var/log/rsync/1Csrv-`date +%Y-%m-%d`.log

Что происходит:

  1. Все свежие дампы базы из папки /var/lib/pgpro/backup/ сервера 10.20.5.22 копируются в папку с бэкапами /mnt/data/backup/bases.
  2. Старые дампы, которые были скопированы ранее, перемещаются в папку /mnt/data/backup/bases_increment/2025-02-13/ (дата автоматически подставляется).
  3. Лог выполнения команды сохраняется в файл /var/log/rsync/1Csrv-2025-02-13.log.

Пример лога:

2025-02-13_05-29 Start backup 1Csrv
receiving incremental file list
deleting 2025-02-10_05-01-zup.sql.gz
deleting 2025-02-10_05-01-buh.sql.gz
2025-02-13_05-01-buh.sql.gz
1,380,560,010 100% 1.03MB/s 0:21:22 (xfr#1, to-chk=20/62)
2025-02-13_05-01-zup.sql.gz
444,272,983 100% 1.63MB/s 0:04:19 (xfr#2, to-chk=19/62)

Преимущества:

  • Все изменения фиксируются, и старые файлы не теряются.
  • Удобно отслеживать изменения в хранилищах. Например, если файлы были изменены или удалены, они сохраняются в отдельной папке.

🟡 Ключ --ignore-existing

Этот ключ полезен, когда нужно восстановить файлы из бэкапа, не перезаписывая существующие файлы в источнике. Например, если кто-то случайно удалил несколько файлов, их можно восстановить, не затрагивая остальные.

Пример команды:

/usr/bin/rsync -av --ignore-existing back_user@10.30.7.5:/mnt/backup/www/ /var/www/

Что происходит:

  • Восстанавливаются только те файлы, которых нет в целевой папке /var/www/.
  • Существующие файлы остаются без изменений.

🟢 Ключ --update

Этот ключ позволяет обновлять только те файлы в целевой папке, которые старше соответствующих файлов в источнике.

Пример команды:

/usr/bin/rsync -av --update back_user@10.30.7.5:/mnt/backup/www/ /var/www/

Что происходит:

  • Файлы в целевой папке обновляются только в том случае, если они старше файлов в источнике.
  • Если файлы отсутствуют в целевой папке, они копируются из источника.

Преимущества:

  • Удобно использовать, когда нужно собрать самые свежие версии файлов из разных источников.

⚫️ Ключ --dry-run

Этот ключ позволяет выполнить тестовый прогон команды без реального копирования или удаления файлов. Он полезен для отладки и проверки команд перед их выполнением.

Пример команды:

/usr/bin/rsync -av --dry-run --delete back_user@10.30.7.5:/mnt/backup/www/ /var/www/

Что происходит:

  • Команда выполняется в тестовом режиме, показывая, какие файлы будут скопированы или удалены.
  • Реальные изменения не вносятся.

Преимущества:

  • Позволяет избежать ошибок, особенно при использовании ключа --delete.

Заключение

Rsync – это мощный инструмент для синхронизации и резервного копирования файлов. Его гибкость и широкие возможности делают его незаменимым в арсенале системного администратора. Использование ключей, таких как --backup--ignore-existing--update и --dry-run, позволяет адаптировать rsync под конкретные задачи и минимизировать риски потери данных.

Если вы нашли эту статью полезной, не забудьте сохранить её в закладки и поставить лайк! 😊

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *