2.8.4.4 Использование утилит dd и rsync для резервного копирования и синхронизации данных
Окружение
- Версия РЕД ОС: 7.3
- Редакция ОС: Все
- Конфигурация: Рабочая станция
- Версия ПО: coreutils-8.32, rsync-3.2.7
Вы можете подробнее ознакомиться с работой утилит для архивирования, копирования и восстановления файлов, просмотрев наши обучающие видео:
на RuTube:
в Яндекс.Дзен:
в VK Видео:
На наших каналах вы также сможете найти много другой полезной информации.
dd
Dd (data definition) — это утилита, предназначенная для копирования и конвертации файлов. Она позволяет выполнять более сложные операции, чем просто копирование, как в случае с командой cp. С помощью dd можно копировать первые n байт файла, пропустить m байт от начала файла, читать данные с поврежденных носителей, преобразовывать содержимое файла в формат ASCII, изменять порядок байтов в файле, копировать очень большие файлы и выполнять другие операции.
Установка
Утилита dd входит в пакет coreutils, который установлен в РЕД ОС по умолчанию. Если пакет не установлен, выполните команду для установки:
sudo dnf install coreutils
Синтаксис
Утилита доступна для запуска через терминал при помощи команды следующего вида:
dd if=[входной_файл] of=[выходной_файл] [параметры]
Параметры
Основные параметры:
bs — указывает сколько байт читать и записывать за один раз;
cbs — сколько байт нужно записывать за один раз;
count — скопировать указанное количество блоков, размер одного блока указывается в параметре bs;
conv — применить фильтры к потоку данных;
ibs — читать указанное количество байт за раз;
obs — записывать указанное количество байт за раз;
seek — пропустить указанное количество байт в начале устройства для чтения;
skip — пропустить указанное количество байт в начале устройства вывода;
status — указывает насколько подробным нужно сделать вывод;
iflag, oflag — позволяет задать дополнительные флаги работы для устройства ввода и вывода, основные из них: nocache, nofollow.
Пример работы
1. Команда для копирования системного раздела диска в файл:
dd if=/dev/sda1 of=/media/device/sda1.bin bs=4096
2. С учетом возможности перенаправления стандартного ввода/вывода команда dd позволяет применять для копирования алгоритмы сжатия или защитного преобразования:
dd if=/dev/sda1 bs=4096 | gzip > /media/device/sda1.bin.gz2
3. Команда для восстановления системного раздела диска (для этого потребуется загрузиться с отдельного диска, и примонтировать носитель, на котором был размещен файл с образом):
dd if=/media/mountpoint/sda1.bin of=/dev/sda1 bs=4096
4. Сохранение образа диска в файл:
dd if=/dev/sr0 of=~/CD.iso bs=2048 conv=noerror
5. Создание образа жесткого диска или раздела на нем и сохранение этого образа на диск:
dd if=/dev/sda of=~/disk.img
6. Создание сжатого образа диска:
dd if=/dev/sda2 | bzip2 disk.img.bz2
7. Копирование файлов:
dd if=/home/sergiy/test.txt of=/home/sergiy/test1.txt
8. Копирование файлов блоками размером по 5 мегабайт:
dd if=/dev/sda of=~/disk.img bs=5M
9. Запись образа на жесткий диск или раздел:
dd if=~/disk.img of=/dev/sda
rsync
Rsync — это программное обеспечение с открытым исходным кодом, которое можно использовать для синхронизации файлов и папок с локального компьютера на удаленный и наоборот. Примечательная особенность rsync — возможность передавать зашифрованные файлы с помощью SSH и SSL. Кроме того, здесь передача файлов выполняется в один поток, в отличие от других подобных программ, создающий отдельный поток для передачи каждого файла. Это увеличивает скорость и убирает дополнительные задержки, которые становятся проблемой при передаче большого количества маленьких файлов.
Установка
Пакет rsync установлен в РЕД ОС по умолчанию. Если пакет не установлен, выполните команду для установки:
sudo dnf install rsync
Синтаксис
Утилита доступна для запуска через терминал при помощи команды следующего вида:
rsync [параметры] [источник] [назначение]
Источник и назначение могут быть локальными или удалёнными директориями, доступными по протоколам SSH, rsync, ftp или samba.
Параметры
Основные параметры rsync:
-v — выводить подробную информацию о процессе копирования;
-q — минимум информации;
-c — проверка контрольных сумм для файлов;
-a — режим архивирования, когда сохраняются все атрибуты оригинальных файлов;
-R — относительные пути;
-b — создание резервной копии;
-u — не перезаписывать более новые файлы;
-l — копировать символьные ссылки;
-L — копировать содержимое ссылок;
-H — копировать жесткие ссылки;
-p — сохранять права для файлов;
-g — сохранять группу;
-t — сохранять время модификации;
-x — работать только в этой файловой системе;
-e — использовать другой транспорт, например, ssh;
-z — сжимать файлы перед передачей;
--delete — удалять файлы которых нет в источнике;
--exclude — исключить файлы по шаблону;
--recursive — перебирать директории рекурсивно;
--no-recursive — отключить рекурсию;
--progress — выводить прогресс передачи файла;
--stat — показать статистику передачи;
--version — версия утилиты.
Пример работы
1. Rsync позволяет синхронизировать файлы и папки в пределах одной машины. Использование rsync для синхронизации файла на локальном компьютере:
rsync -zvh file /tmp/backups/
2. Синхронизация папок rsync выполняется так же, как и файлов:
rsync -zvh /var/account/* /tmp/backups/
3. Если вы хотите, чтобы все атрибуты файлов, такие, как дата изменения и создания сохранялись, необходимо использовать опцию -a:
rsync -azvh /var/account/* /tmp/backups/
4. Синхронизация файлов производится следующим образом. Скопируем локальную папку files, на удаленный сервер:
rsync -avz /home/files root@10.81.1.190:/home/user
5. По умолчанию rsync попытается использовать транспорт ssh. Если вы хотите использовать ранее созданный сервер rsync, нужно указать это явно:
rsync -avz /home/files rsync://10.81.1.190:/share
6. Синхронизация файлов с удаленного сервера:
rsync -avz root@10.81.1.190:/home/ /home/files/
Дата последнего изменения: 06.02.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.