Резервное копирование файлов и каталогов с использованием Rsync в Linux
Ищете надежное и надежное решение для резервного копирования ваших данных в Linux? Rsync поможет вам! В этом руководстве описаны шаги по резервному копированию файлов и каталогов с помощью Rsync в Linux.
1. Введение
Если вы никогда не создаете резервные копии своих данных, считая, что все будет работать нормально, я бы сказал, что вы ошибаетесь.
Просто спросите любого пользователя Linux, он разделит боль, связанную с отсутствием резервного копирования своей системы/данных. Будучи новичком, я однажды совершил эту ошибку и понял важность резервного копирования.
Существует множество инструментов резервного копирования для платформ Linux и Unix. Rsync (удаленная синхронизация) считается одним из наиболее широко используемых и надежных инструментов резервного копирования.
2. Резервное копирование файлов и каталогов с помощью Rsync в Linux.
Используя Rsync, мы можем:
- Резервное копирование всей системы,
- Br резервное копирование отдельных файлов и каталогов.
В первом типе мы копируем всю файловую систему Linux на внешнее устройство или в сетевую папку. Вы можете использовать эту копию, чтобы привести машину в исходное состояние в случае любого системного сбоя.
Второй тип — резервное копирование или копирование только выборочных файлов и каталогов. Например, вы можете скопировать важные файлы конфигурации или весь каталог $HOME
и исключить все остальное.
Мы уже рассмотрели, как создать резервную копию всей системы Linux с помощью Rsync.
В этом руководстве основное внимание уделяется выборочному резервному копированию файлов и каталогов с использованием Rsync в Linux.
2.1. Выбор носителя информации
В качестве первого шага решите, где вы собираетесь делать резервную копию своих данных. Это очень важно!
Вы можете создать резервную копию своих данных на внешнем жестком диске, в облачном хранилище или сетевом хранилище (NAS). Простой и дешевый вариант — использовать внешний жесткий диск.
Если на вашем компьютере есть два отдельных диска, вы можете использовать любой из них для резервного копирования данных, учитывая, что оба не выйдут из строя одновременно.
Примечание:
Если вы серьезно относитесь к резервному копированию, не помещайте резервную копию на тот же диск. Всегда используйте внешний диск, дополнительный диск, общий сетевой ресурс, облачное хранилище и т. д.
В демонстрационных целях в этом руководстве я буду использовать внешний жесткий диск 1 ТБ.
2.3. Резервное копирование файлов с помощью Rsync
Общий синтаксис Rsync для копирования данных из одного места в другое:
rsync [OPTION…] SRC… [DEST]
Здесь,
OPTION
— список параметров Rsync.SRC
— исходный файл/каталог.DEST
— пункт назначения
Вот простая команда Rsync для резервного копирования или копирования файла из одного места в другое в самой локальной системе.
rsync src_file dest_file
Примеры:
rsync -auv ostechnix.txt ostechnix-bak.txt
Здесь,
-a
— режим режима архивирования (сохранение свойств файла и символических ссылок)-u
— пропустить более новые файлы на принимающей стороне.-v
— подробный режим
Приведенная выше команда сохраняет файл резервной копии ostechnix-bak.txt
в текущем каталоге. Вы также можете указать другой каталог назначения, как показано ниже:
rsync -auv ostechnix.txt Downloads/ostechnix-bak.txt
Если вы не укажете имя целевого файла, Rsync будет использовать то же имя исходного файла, что и целевой файл.
Сохранение файлов резервной копии на одном диске на самом деле не является резервной копией. Вы должны сохранить данные резервной копии на внешнем диске или в сетевой папке или, по крайней мере, в другом разделе.
Например, следующая команда создаст резервную копию файла на моем внешнем диске:
rsync -auv ostechnix.txt /media/karthick/"My Passport"/
Rsync имеет множество дополнительных опций. Взгляните на следующий пример:
rsync -azvhP ostechnix.txt /media/karthick/"My Passport"/
Эта команда передает файл в архивном (для сохранения атрибутов) и сжатом (архивированном) режиме с подробным и удобочитаемым индикатором выполнения.
2.4. Резервное копирование каталогов с использованием Rsync
Вместо резервного копирования одного файла вы можете поместить все файлы в каталог и выполнить резервное копирование этого каталога с помощью Rsync. Это пригодится при зеркалировании и синхронизации данных.
В этом руководстве я покажу вам, как сделать резервную копию HOME-каталога с помощью Rsync.
2.4.1. Резервное копирование HOME-каталога с помощью Rsync
Rsync — это инструмент инкрементного копирования файлов. Это означает, что он синхронизирует только новые или измененные данные в исходном каталоге (т.е. /home
в нашем случае) вместо повторной синхронизации всех данных с нуля.
Чтобы создать резервную копию моего каталога $HOME
на внешнем диске, я использовал следующую команду:
rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/
Давайте разберем приведенную выше команду и посмотрим, что делает каждая опция.
- Флаг
-a
представляет собой комбинацию множества опций. Этот флаг обеспечивает рекурсивное копирование и сохраняет такие атрибуты, как разрешение файла/каталога, владелец и т. д. - Флаг
-v
включит подробный режим, который будет отображать больше журналов в терминале при запуске команды rsync. - Флаг
-x
ограничит rsync синхронизацией данных в пределах границ файловой системы. Если вы смонтировали какую-либо файловую систему в своем домашнем каталоге, она будет пропущена во время операции синхронизации. - Флаг
-P
представляет собой комбинацию двух флагов. Он будет отображать ход каждой синхронизации и сохранять частично переданные файлы. - Флаг
--delete
удалит все каталоги и файлы, которые недоступны в источнике, но доступны в месте назначения. Вы должны быть очень осторожны при использовании флага. - Флаг
--exclude-from=File
принимает файл в качестве аргумента. Этот файл содержит список файлов и каталогов, которые будут игнорироваться rsync.
Я создал файл с именем ignore_list.txt
, который содержит файлы и каталоги, которые необходимо исключить.
В приведенной выше команде эта часть --exclude-from=/home/karthick/Work/Backup/ignore_list.txt
определяет список исключений.
Вот содержимое файла ignore_list.txt
:
Исключенный список
Список элементов, которые следует исключить из изображения выше, является моим личным выбором и может отличаться для вас. Измените параметр в соответствии с вашей средой.
Последние две части приведенной выше команды Rsync — это расположение источника и назначения. В моем случае источником является мой каталог $HOME, а местом назначения — мой внешний диск. Замените источник и место назначения в соответствии с вашей средой.
Внимание! Если вы хотите узнать точку подключения внешнего диска, выполните команду lsblk
.
$ lsblk
sdb 8:16 0 931.5G 0 disk
└─sdb1 8:17 0 931.5G 0 part /media/karthick/My Passport
Перед первым запуском команды rsync
всегда рекомендуется выполнить пробный прогон. Пробный прогон будет моделировать изменения, которые будут внесены. Используйте ту же команду, но с флагом -n
.
rsync -avxP -n --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/
Пример вывода:
sending incremental file list
karthick/
karthick/.bash_history
20,527 100% 0.00kB/s 0:00:00 (xfr#1, ir-chk=1056/1060)
karthick/.shutter/
karthick/.shutter/drawingtool.xml
228 100% 4.54kB/s 0:00:00 (xfr#2, ir-chk=1037/1060)
karthick/.shutter/profiles/
karthick/Pictures/
karthick/Pictures/Selection_001.png
37,626 100% 349.94kB/s 0:00:00 (xfr#3, to-chk=47/3001)
karthick/Pictures/Selection_002.png
25,815 100% 227.12kB/s 0:00:00 (xfr#4, to-chk=46/3001)
karthick/Pictures/Selection_003.png
63,275 100% 532.69kB/s 0:00:00 (xfr#5, to-chk=45/3001)
karthick/Pictures/Selection_004.png
77,965 100% 581.20kB/s 0:00:00 (xfr#6, to-chk=44/3001)
karthick/Pictures/Selection_005.png
75,863 100% 532.99kB/s 0:00:00 (xfr#7, to-chk=43/3001)
karthick/Pictures/Selection_006.png
11,628 100% 75.20kB/s 0:00:00 (xfr#8, to-chk=42/3001)
karthick/Pictures/Selection_007.png
24,311 100% 150.26kB/s 0:00:00 (xfr#9, to-chk=41/3001)
karthick/Work/Backup/
karthick/Work/Backup/home_dir_backup.sh
764 100% 4.34kB/s 0:00:00 (xfr#10, to-chk=20/3001)
karthick/Work/Backup/home_dir_backup.sh~
796 100% 4.37kB/s 0:00:00 (xfr#11, to-chk=19/3001)
karthick/Work/Backup/ignore_list.txt
182 100% 1.00kB/s 0:00:00 (xfr#12, to-chk=18/3001)
karthick/Work/Backup/ignore_list.txt~
182 100% 1.00kB/s 0:00:00 (xfr#13, to-chk=17/3001)
...
...
...
sent 88,424 bytes received 9,459 bytes 195,766.00 bytes/sectotal size is 3,028,935,519 speedup is 30,944.45 (DRY RUN)
Если все идет по плану, удалите флаг -n
и запустите команду для резервного копирования данных.
rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/
В зависимости от размера первый запуск займет некоторое время.
sending incremental file list
karthick/
karthick/.bash_history
20,527 100% 0.00kB/s 0:00:00 (xfr#1, ir-chk=1056/1060)
karthick/.shutter/
karthick/.shutter/drawingtool.xml
228 100% 4.54kB/s 0:00:00 (xfr#2, ir-chk=1037/1060)
karthick/.shutter/profiles/
karthick/Pictures/
karthick/Pictures/Selection_001.png
37,626 100% 349.94kB/s 0:00:00 (xfr#3, to-chk=47/3001)
karthick/Pictures/Selection_002.png
25,815 100% 227.12kB/s 0:00:00 (xfr#4, to-chk=46/3001)
karthick/Pictures/Selection_003.png
63,275 100% 532.69kB/s 0:00:00 (xfr#5, to-chk=45/3001)
karthick/Pictures/Selection_004.png
77,965 100% 581.20kB/s 0:00:00 (xfr#6, to-chk=44/3001)
karthick/Pictures/Selection_005.png
75,863 100% 532.99kB/s 0:00:00 (xfr#7, to-chk=43/3001)
karthick/Pictures/Selection_006.png
11,628 100% 75.20kB/s 0:00:00 (xfr#8, to-chk=42/3001)
karthick/Pictures/Selection_007.png
24,311 100% 150.26kB/s 0:00:00 (xfr#9, to-chk=41/3001)
karthick/Work/Backup/
karthick/Work/Backup/home_dir_backup.sh
764 100% 4.34kB/s 0:00:00 (xfr#10, to-chk=20/3001)
karthick/Work/Backup/home_dir_backup.sh~
796 100% 4.37kB/s 0:00:00 (xfr#11, to-chk=19/3001)
karthick/Work/Backup/ignore_list.txt
182 100% 1.00kB/s 0:00:00 (xfr#12, to-chk=18/3001)
karthick/Work/Backup/ignore_list.txt~
182 100% 1.00kB/s 0:00:00 (xfr#13, to-chk=17/3001)…
…
…
sent 3,029,863,865 bytes received 51,335 bytes 53,626,817.70 bytes/sec
total size is 3,028,934,994 speedup is 1.00
2.4.2. Создать скрипт резервного копирования
Запомнить длинную команду может быть сложно. Чтобы не вводить длинную команду rsync
в терминале, вы можете создать простой сценарий BASH и вызывать его всякий раз, когда захотите инициировать резервное копирование.
Создайте скрипт с именем home_dir_backup.sh
:
nano home_dir_backup.sh
Добавьте следующие строки:
#!/usr/bin/env bash
PURPOSE : RSYNC COMMAND TO BACKUP MY HOME DIRECTORY TO EXTERNAL DEVICE..
REPLACE SOURCE, DESTINATION AND EXCLUDE ACCORDING TO YOUR ENVIRONMENT.
rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/
Добавьте, удалите или измените параметры Rsync в соответствии с вашими требованиями. Также измените исходный и целевой пути на свои собственные. Сохраните и закройте файл.
Сделайте скрипт исполняемым:
chmod +x <path-to-home_dir_backup.sh>
Теперь запустите сценарий в любое время, чтобы начать резервное копирование каталога $HOME:
./path-to-home_dir_backup.sh
Используйте более короткое имя сценария, чтобы его было легче запомнить.
Вы также можете создать мягкую ссылку для файла сценария в /usr/bin
или в любых пользовательских каталогах, доступных в ` PATH
переменная.
2.4.3. Создать псевдоним
Другой способ избежать ввода длинных команд — использовать псевдонимы.
Отредактируйте файл ~/.bashrc
и добавьте в конец следующую строку:
alias backup="rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /
media/karthick/"My Passport"/"
Создайте файл bashrc
, чтобы изменения вступили в силу немедленно:
source ~/.bashrc
Теперь просто запустите следующую команду для резервного копирования каталога $HOME:
backup
Вам решать, что вы хотите использовать. Вы можете либо создать псевдоним, либо создать сценарий и запустить rsync, запустив сценарий. В моем случае я создал сценарий, а затем создал для него псевдоним.
3. Запланируйте резервное копирование
Вы можете использовать планировщик cron
, чтобы запланировать запуск заданий резервного копирования в определенное время в определенный день.
Отредактируйте задания cron текущего пользователя с помощью команды
crontab -e
Определите график резервного копирования. Скажем, чтобы запускать резервное копирование каждый день в 3 часа ночи, используйте следующую строку:
0 3 * * * <rsync-command-to-execute>
В зависимости от ваших требований вы можете планировать ежедневные, еженедельные или ежемесячные задания.
Если вы новичок в Cron Jobs, мы составили список полезных примеров заданий cron для планирования задач в Linux. Более подробную информацию об использовании cron можно найти в следующем руководстве.
- Руководство для начинающих по заданиям Cron
4. Графические интерфейсы Rsync
Если вы новичок в Linux, вам может быть сложно понять все параметры и флаги Rsync. Не беспокойся! Доступно несколько графических инструментов интерфейса для Rsync. Одним из таких инструментов является Grsync.
Grsync — это простой графический интерфейс пользователя для Rsync. Вам не нужно запоминать какие-либо команды Rsync и их параметры. Вы можете делать все через простой в использовании графический интерфейс.
Для получения более подробной информации обратитесь к следующему руководству:
- Grsync - простой графический интерфейс для Rsync
5. Вывод
В этом руководстве мы рассмотрели, как создавать резервные копии файлов и каталогов с помощью Rsync в Linux. Как видите, копировать файлы и каталоги с помощью Rsync очень просто!
Мы также показали вам, как создать резервную копию вашего домашнего каталога с помощью команды rsync, а также некоторые способы ее запуска и планирования.
Этот метод также можно применить к любому каталогу или файловой структуре в Linux для резервного копирования данных. Если вы считаете, что у вас есть лучшее решение для резервного копирования, мы будем рады услышать ваше мнение в разделе комментариев ниже.
Связанное чтение:
- Возобновить частично переданные файлы через SSH с помощью Rsync
- Как создать резервную копию и восстановить файлы с помощью Deja Dup в Linux
- Как настроить сервер резервного копирования с помощью Rsnapshot
- Как синхронизировать файлы с Unison в Linux
- Как синхронизировать локальные и удаленные каталоги в Linux
- Как синхронизировать файлы и каталоги с помощью Zaloha.sh
- CYA - утилита для создания снимков и восстановления системы для Linux
- Restic - быстрое, безопасное и эффективное приложение для резервного копирования