В мире информационных технологий важно сохранить копию своих данных, чтобы использовать их при необходимости в случае сбоя диска или удаления по ошибке. Поэтому регулярное создание резервных копий в конце дня является хорошей практикой ответственного пользователя компьютера.
Для копирования больших данных обычно используется команда 'rsync'. Однако команда 'cp' также используется при копировании небольшого количества каталогов и файлов на локальной машине.
Необходимые условия
Для работы этого учебника вам необходимо иметь следующее: Две машины Debian с правами root
Резервное копирование каталогов с помощью команды cp
Первая команда, которую мы рассмотрим, - это 'cp'. Она используется для копирования небольшого количества файлов и папок на локальной машине. Поэтому она практически не используется в промышленности.
Синтаксис команды 'cp' следующий.
1 | cp -option1 -option2 [источник] [назначения] |
Для понимания, мы собираемся скопировать файлы с ~/Desktop/index.jpg в /data/backup/ . Выполните следующую команду в терминале.
1 | cp -avr ~/Desktop/index.jpg /data/backup/ |
- a: Используется для сохранения атрибутов каталога, таких как режим файла, право собственности, метки времени и т.д.
- r: Используется для рекурсивного копирования каталогов, которые находятся внутри основного каталога.
- v: Используется для подробного вывода.
Если вы хотите скопировать все файлы, каталоги и подкаталоги в другой каталог, вы можете использовать подстановочный знак *. Например, следующая команда скопирует все данные из существующего каталога Desktop/log/ в Karim/logro/.
1 | cp -avr ~/Desktop/* /data/backup/ |
Ниже приведен пример вывода.
Резервное копирование каталогов с помощью rysnc
Как мы уже говорили, самой распространенной командой для резервного копирования файлов и папок является команда 'rsync'. Поэтому давайте обсудим, что это такое и как она используется.
Что такое rsync?
Rsync расшифровывается как remote sync и была написана Эндрю Триджеллом и Полом Макеррасом 19 июня 1996 года. Это эффективная команда для синхронизации и передачи файлов между локальными и сетевыми машинами. Она доступна по умолчанию в большинстве систем. Однако вы можете установить ее с помощью следующих простых команд, если она недоступна (Выполняйте команды с правами root).
1 2 | apt-get update apt-get install rsync |
Перед синхронизацией данных вам также необходимо установить клиент и сервер ssh на обеих сетевых машинах. Выполните следующие команды с правами root на обеих машинах Debian.
1 | apt-get install ssh |
Резервное копирование каталогов на локальной машине
Основной синтаксис при синхронизации файлов на локальной машине следующий.
1 | rsync [опции] [исходная директория] [конечная директория] |
Если вы хотите сохранить метаданные, такие как право собственности, разрешения, дата создания и т.д. Вы должны использовать опцию -a. Если вы хотите рекурсивно копировать каталоги внутри каталога, используйте опцию -r.
1 | rsync -ar [исходная директория] [конечная директория] |
Аналогично, если вы хотите видеть прогресс в процессе синхронизации, используйте опцию -v. Команды должны выглядеть следующим образом,
1 | rsync -avr [исходная директория] [конечная директория] |
Предположим, мы хотим синхронизировать файлы и папки, расположенные по адресу Desktop/log с Karim/logro, команда должна выглядеть следующим образом.
1 | rsync -avr ~/Desktop/* /data/backup/ |
Давайте обсудим еще один пример и скажем, что у нас есть папка data-1, расположенная на жестком диске 1 (/media/hdd1/data-1), и вы хотите синхронизировать ее со вторым жестким диском по адресу /media/hdd2/. Полная команда должна выглядеть следующим образом.
1 | rsync -avr /media/hdd1/data-1 /media/hdd2/ |
Команда при выполнении создаст каталог data-1 на втором жестком диске и скопирует все его содержимое по пути назначения /media/hdd2/.
Резервное копирование файлов и каталогов по сети
При передаче данных по сети синтаксис немного отличается. Если вы хотите синхронизировать локальный каталог с удаленным каталогом, команда должна выглядеть следующим образом.
1 | rsync [-опции] [Исходная директория] [имя пользователя]@[IP адрес сервера назначения]:[rjytxyfz lbhtrnjhbz] |
Предположим, у меня есть тестовая папка, расположенная на моей локальной машине по адресу /home/karim/testfolder, и я хочу синхронизировать ее по адресу /home/karim. Удаленный пользователь - 'user', а IP-адрес машины - 10.1.1.2. Выполните следующую команду в терминале.
1 | rsync -avr /home/user/Desktop/ user@10.1.1.2:/home/user/ |
После выполнения этой команды вам будет предложено ввести пароль удаленной машины.
Если вы хотите синхронизировать удаленный каталог с локальным, команда должна выглядеть следующим образом.
1 | rsync [-опции] [имя пользователя]@[IP адрес сервера назначения]:[Исходная директория] [Директория назначения] |
Предположим, у нас есть удаленная папка 'testfolder', расположенная по адресу /home/user/, и я хочу синхронизировать ее с локальной машиной по адресу /home/user/. IP-адрес удаленной машины - 10.1.1.2, а имя пользователя - user.
Выполните следующую команду в терминале.
1 | rsync -avr user@10.1.1.2:/home/user/ /home/user/ |
Как автоматизировать резервное копирование
Удобнее всего автоматизировать резервное копирование, чтобы системным инженерам не нужно было беспокоиться о ручном выполнении команд и создании резервных копий каждый день.
В Linux существует известный инструмент под названием 'crontab', который используется для автоматизации процесса резервного копирования. Мы можем запланировать выполнение всех вышеперечисленных команд ежедневно, еженедельно или ежемесячно. Если вы не установили crontab в своем дистрибутиве Linux, выполните следующие команды в терминале с привилегиями sudo.
1 2 | apt-get update apt-get install cron |
После установки crontab выполните следующую команду в терминале, чтобы открыть редактор crontab.
1 | crontab -e |
Примерный вывод должен выглядеть следующим образом.
Настройка резервного cronjob
В crontab есть следующие пять полей,
m h dm m dw команда
- m: указывает минуту (0-59)
- h: указывает час (0-23)
- dm: указывает день месяца (1-31)
- m: указывает месяц (1-12)
- dw: указывает день недели (0-6, где 0 - воскресенье).
Возьмем предыдущий пример синхронизации каталога с одного диска на другой и скажем, что мы хотим делать это каждый день в 12 часов дня, задание cron должно быть следующим.
1 | 0 0 * * * rsync -avr /media/hdd1/data-1 /media/hdd2/ |
Предположим, вы хотите делать резервную копию каждый месяц в воскресенье в 12 часов дня, задание cron должно быть написано следующим образом.
1 | 0 0 1 * * * rsync -avr /media/hdd1/data-1 /media/hdd2/ |
Заключение
Вы прочитали, как мы можем создавать резервные копии с помощью чрезвычайно мощной команды 'rysnc'. В завершение статьи мы создали 'crontab'. 'rsync' и 'crontab' также являются полезной комбинацией.