- Создание резервной копии диска при помощи Linux
- Способ первый: Загрузочный USB носитель с Ubuntu
- Способ второй: Clonezilla
- Способ третий: Команда dd
- Скопировать диск linux файл
- Копирование CD/DVD дисков в файл-образ
- Утилита dd. Простейший вариант использования.
- Совместное использование утилит dd и pv
- Утилита dcfldd
- Монтирование ISO-образов CD/DVD дисков
- Как копировать файлы и каталоги в Linux
- Копирование файлов с помощью команды cp
- Скопируйте файл в каталог
- Копировать несколько файлов
- Копирование каталогов с помощью команды cp
- Копирование файлов и каталогов с помощью команды rsync
- Выводы
- Команда cp: правильное копирование папок с файлами в *nix
- Выводы
- Послесловие
Создание резервной копии диска при помощи Linux
Создать копию всего диска ≈ прекрасный способ сохранить не только ваши данные, но и саму систему. Цены на переносные USB жесткие диски постоянно снижаются, и весьма полезно иметь парочку для подобных работ. Если ваш основной винчестер испортится, вы сможете заменить его на запасной с копией системы и продолжить работу буквально через несколько минут. Дело только за изготовлением такой копии. Это можно сделать множеством способов, в этой статье мы опишем 3 из них.
Основная проблема при снятии точной копии диска заключается в необходимости загрузиться с другого носителя, чтобы копия была полноценной. Можно загрузиться с LiveCD, либо с загрузочной флешки. Вероятно, у вас где-нибудь хранится установочный диск вашего дистрибутива, можно воспользоваться им. В рамках данной статьи мы будем говорить о дистрибутиве Ubuntu 10.4. Второй способ снять копию жесткого диска ≈ использовать специальный клонирующий дистрибутив Clonezilla. Этот способ хорош для тех, кто еще плохо знает Linux и совсем неуверенно себя чувствует в командной строке. Третий способ позволяет снять копию вашего винчестера из любого дистрибутива Linux при помощи одной простой команды в терминале.
Способ первый: Загрузочный USB носитель с Ubuntu
Как только диск создан, с него можно загружаться. Возможно, вам придется подключить загрузку с USB в BIOS вашего компьютера. На многих новых машинах, нажатием при старте клавиши F12 вызывается загрузочное меню, где указаны все типы загрузочных носителей.
Когда Ubuntu загрузится, можно приступать к созданию копии жесткого диска. Для этого воспользуемся программой GParted, умеющей создавать копии разделов и дисков.
Найти эту программу можно так: Система —> Администрирование —> Partition Editor (или нечто подобное). А можно нажать одновременно клавиши ALT и F2 и появившемся окне набрать «gksu gparted» (без кавычек).
Там же есть и программа Disk Utility, которая содержит множество утилит для работы со всеми дисками в вашей системе. С ее помощью можно примонтировать или отмонтировать диски, отформатировать их. Последнее, кстати, совсем нелишне проделать с тем диском, на котором вы будете создавать резервную копию, особенно если на нем раньше была Windows.
Сам процесс создания копии подробно описан на сайте GParted или на форуме Ubuntu . Существует также специальный GParted Live CD , который может заменить Ubuntu.
Процесс изготовления копии жесткого диска на съемный USB диск займет немало времени, в зависимости от объема диска; в нашем случае около четырех часов. Значительно ускорить этот процесс может адаптер с eSATA коннектором, типа Thermaltake BlackX ST0005U . Такую штуку полезно иметь всем, кто часто создает резервные копии дисков.
Способ второй: Clonezilla
и производите копирование любого диска на любой диск из числа подключенных к системе. Для этой цели дистрибутив содержит множество программ, объединенных одной простой системой меню, помогающей вам проделать нужную операцию. По умолчанию, программой копирования разделов является Partclone .
Clonezilla SE (Server Edition) предназначена для клонирования дисков через сети.
Последняя версия Clonezilla 1.2.5.17 выходит в Debian и Ubuntu вариантах. Доступна теперь и AMD64 версия, имеющая 64-битные версии всех программ и возможность копировать большие разделы. Все приложения обновлены до версии ядра Linux 2.6.32-12. Самое сложное при использовании Clonezilla ≈ не перепутать, какой из дисков является мастером, а какой копией. Clonezilla также обеспечивает копирование Главного Загрузочного Сектора (MBR), чего не делает GParted из Ubuntu Live CD. В последнем случае приходится делать это вручную через командную строку.
Способ третий: Команда dd
Выглядит это в самом общем виде вот так:
В данном примере /dev/sda ≈ это диск, с которого снимается копия, а /dev/sdb ≈ диск на который копируется. Имейте в виду, что dd делает побайтовую копию всего диска, в том числе и загрузочного сектора (MBR). Команда dd позволяет также скопировать диск не на другой диск, а просто в файл, который впоследствии можно поместить на хранение куда угодно, можно записать на DVD, а в случае нужды при помощи той же команды копировать обратно на место:
Скорость при копировании при помощи команды dd в приведенном варианте будет невелика, примерно такая же, как при помощи программы GParted. Дело в том, что по умолчанию dd работает блоками по 512 байт. Но можно в несколько раз повысить эту скорость, применив другой размер блока, скажем 100Мб:
Советую вам прочесть либо ман dd, либо статью про эту команду.
Не важно, каким из трех способов вы воспользуетесь; важно, что у вас будет резервная копия всей системы. Компьютеры время от времени ломаются, и время их поломки всегда самое неудачное. Так что не ленитесь создать клон своего винчестера.
Источник
Скопировать диск linux файл
Копирование CD/DVD дисков в файл-образ
Достаточно часто перед пользователями ОС Linux возникает задача копирования дисков CD или DVD в файл-образ для последующего копирования на другие физические носители информации или монтирования в операционной системе. С целью копирования удобнее всего использовать утилиту dd или одну из ее модификаций, которые по умолчанию входят в состав всех дистрибутивов Linux. Рассмотрим несколько вариантов использования утилиты dd. В ходе описания процесса копирования дисков будем предполагать, что используется ОС Linux Ubuntu, а физический CD/DVD диск уже находится в приводе CD/DVD.
Утилита dd. Простейший вариант использования.
Для копирования диска достаточно выполнить в терминале команду:
В результате работы утилиты в домашней директории пользователя будет создан файл-образ cdimage.iso, отвечающий стандарту ISO 9660, пригодный для использования во всех без исключения современных операционных системах, например, Linux, MacOS, Microsoft Windows. Время создания образа CD диска 700 Мб займет 2-4 минуты в зависимости от скорости привода CD/DVD. Указанный способ прост, но имеет один существенный недостаток — во время работы утилита «молчит», т.е. не выводит в терминал какую-либо информацию о ходе выполнения копирования. Два других способа лишены этого недостатка, но при этом требуют установки дополнительного программного обеспечения.
Совместное использование утилит dd и pv
Существует утилита pv — это сокращенно от pipeviewer, то есть просмотрщик пайпов. На описании эффективности использования пайпов останавливаться не будем — это общеизвестная информация. Единственное, «но» в работе с ними — это то, что набрав команду и нажав Enter часто не хватает самой малости — знать сколько времени займет ее выполнение.
Инсталлируем утилиту pv:
Для копирования диска выполним в терминале команду:
Результат работы этой команды тот же, что и в случае использования утилиты dd, но в ходе выполнения команды в стандартном выводе терминала будет выведена информация о ходе копирования.
Утилита dcfldd
Утилита dcfldd является модификацией утилиты dd. В нашем случае мы воспользуемся таким свойством утилиты dcfldd, как вывод информации в стандартный вывод терминала о ходе выполнения копирования. Итак, инсталлируем утилиту dcfldd:
Монтирование ISO-образов CD/DVD дисков
Предположим, что нам необходимо использовать информацию, содержащуюся на образе ISO диска CD/DVD и при этом по какой-то причине (например, нет чистого диска CD/DVD) мы не хотим или не можем скопировать образ диска на физический носитель — чистый диск CD/DVD. В таком случае возможно «смонитровать» файл-образ в виде виртуального носителя информации. Пусть требуется смонтировать образ диска cdimage.iso, который находится в домашней директории пользователя, т.е. образ
/cdimage.iso. Сначала создадим директорию, в которую мы будем монтировать диск:
Далее монтируем образ
/cdimage.iso в созданную директорию:
После выполнения последней команды содержимое образа CD/DVD диска появится в директории
/isoimage. Также на рабочем столе появится ярлык виртуального CD/DVD носителя с требуемой информацией. Смонтированный виртуальный CD/DVD диск с точки зрения пользователя ничем не отличается от смонтированного CD/DVD в приводе физического диска. Для размонтирования смонтированного ISO-образа достаточно выполнить команду:
Источник
Как копировать файлы и каталоги в Linux
Копирование файлов и каталогов — одна из наиболее распространенных задач, которые вы будете выполнять при работе в командной строке. В Linux есть несколько команд для копирования файлов, наиболее широко используемые инструменты — cp и rsync .
Обычной практикой является использование команды cp для копирования файлов и rsync для копирования каталогов.
Чтобы иметь возможность копировать файлы и каталоги, у вас должны быть как минимум права на чтение исходного файла и права записи в целевой каталог.
Копирование файлов с помощью команды cp
В операционных системах Linux и Unix команда cp используется для копирования файлов и каталогов.
Самый простой вариант использования — скопировать файл в текущий рабочий каталог. Например, чтобы скопировать файл с именем file.txt в файл с именем file_backup.txt в текущем каталоге , вы должны выполнить следующую команду:
Если целевой файл существует, он будет перезаписан. Чтобы получить запрос на подтверждение перед перезаписью файлов, используйте параметр -i .
По умолчанию при использовании команды cp для копирования файла новый файл будет принадлежать пользователю, выполняющему команду. Используйте параметр -p чтобы сохранить режим файла, владельца и временные метки :
Другой вариант, который может быть полезен, — это -v . При использовании этой опции команда печатает, что делается:
Скопируйте файл в каталог
Чтобы скопировать файл в каталог, укажите абсолютный или относительный путь к каталогу. Если целевой каталог не указан, файл копируется в текущий каталог.
В следующем примере мы file.txt файл file.txt в file.txt /backup :
При указании в качестве места назначения только имени каталога скопированный файл будет иметь то же имя, что и исходный файл.
Если вы хотите скопировать файл под другим именем, вам необходимо указать желаемое имя файла:
Приведенная выше команда скопирует файл в указанный каталог как new_file.txt .
Копировать несколько файлов
Чтобы скопировать сразу несколько файлов и каталогов, укажите имена исходных файлов и каталогов, за которыми следует каталог назначения в качестве последнего аргумента:
При копировании нескольких файлов местом назначения должен быть каталог.
Команда cp также позволяет использовать сопоставление с образцом. Например, чтобы скопировать все файлы .png из текущего каталога в каталог /backup , вы должны использовать:
Копирование каталогов с помощью команды cp
Чтобы скопировать каталог, включая все его файлы и подкаталоги, используйте параметр -R или -r . В следующем примере мы копируем каталог Pictures в Pictures_backup :
Приведенная выше команда создаст каталог назначения и рекурсивно скопирует все файлы и подкаталоги из источника в каталог назначения.
Если целевой каталог уже существует, сам исходный каталог и его содержимое копируются в целевой каталог. Чтобы скопировать только файлы и подкаталоги, но не целевой каталог, используйте параметр -T :
Параметры, используемые при копировании файлов, также могут использоваться при копировании каталогов. Основное отличие состоит в том, что при копировании каталогов необходимо использовать параметр -R .
Копирование файлов и каталогов с помощью команды rsync
rsync — это быстрая и универсальная утилита командной строки, которая синхронизирует файлы и каталоги между двумя местоположениями. Его можно использовать для копирования файлов в локальные и удаленные места.
rsync включает множество параметров, которые контролируют каждый аспект его поведения.
Наиболее полезная опция -a которая рекурсивно копирует каталоги, передает специальные и блочные устройства и сохраняет символические ссылки, время модификации, группу, владение и разрешения.
Чтобы скопировать один файл из одного места в другое, вы должны выполнить следующую команду:
Если целевой файл существует, rsync перезапишет его.
Эту же команду можно использовать для копирования каталога:
rsync по-разному rsync исходным каталогам, заканчивающимся косой чертой / . Если вы добавите завершающую косую черту в исходный каталог, команда скопирует только содержимое исходного каталога в целевой каталог. Если косая черта в конце опущена, rsync скопирует исходный каталог в целевой каталог. Самый безопасный вариант — всегда включать косую черту / как в месте назначения, так и в источнике.
Чтобы узнать больше о rsync прочтите следующие статьи:
Выводы
Мы показали вам, как копировать файлы и каталоги в системах на базе Linux и Unix, используя утилиты cp и rsync .
Если у вас есть вопросы, оставьте комментарий ниже.
Источник
Команда cp: правильное копирование папок с файлами в *nix
В этой статье будут раскрыты некоторые неочевидные вещи связанные с использованием wildcards при копировании, неоднозначное поведение команды cp при копировании, а также способы позволяющие корректно копировать огромное количество файлов без пропусков и вылетов.
Допустим нам нужно скопировать всё из папки /source в папку /target.
Первое, что приходит на ум это:
Сразу исправим эту команду на:
Ключ -a добавит копирование всех аттрибутов, прав и добавит рекурсию. Когда не требуется точное воспроизведение прав достаточно ключа -r .
После копирования мы обнаружим, что скопировались не все файлы — были проигнорированы файлы начинающиеся с точки типа:
.profile
.local
.mc
и тому подобные.
Почему же так произошло?
Потому что wildcards обрабатывает shell ( bash в типовом случае). По умолчанию bash проигнорирует все файлы начинающиеся с точек, так как трактует их как скрытые. Чтобы избежать такого поведения нам придётся изменить поведение bash с помощью команды:
Чтобы это изменение поведения сохранилось после перезагрузки, можно сделать файл wildcard.sh c этой командой в папке /etc/profile.d (возможно в вашем дистрибутиве иная папка).
А если в директории-источнике нет файлов, то shell не сможет ничего подставить вместо звёздочки, и также копирование завершится с ошибкой. Против подобной ситуации есть опции failglob и nullglob . Нам потребуется выставить failglob , которая не даст команде выполниться. nullglob не подойдёт, так как она строку с wildcards не нашедшими совпадения преобразует в пустую строку (нулевой длины), что для cp вызовет ошибку.
Однако, если в папке тысячи файлов и больше, то от подхода с использованием wildcards стоит отказаться вовсе. Дело в том, что bash разворачивает wildcards в очень длинную командную строку наподобие:
На длину командной строки есть ограничение, которое мы можем узнать используя команду:
Получим максимальную длину командной строки в байтах:
Получим что-то типа:
Итак, давайте будем обходиться вовсе без wildcards.
Давайте просто напишем
И тут мы столкнёмся с неоднозначностью поведения cp . Если папки /target не существует, то мы получим то, что нам нужно.
Однако, если папка target существует, то файлы будут скопированы в папку /target/source.
Не всегда мы можем удалить заранее папку /target, так как в ней могут быть нужные нам файлы и наша цель, допустим, дополнить файлы в /target файлами из /source.
Если бы папки источника и приёмника назывались одинаково, например, мы копировали бы из /source в /home/source, то можно было бы использовать команду:
И после копирования файлы в /home/source оказались бы дополненными файлами из /source.
Такая вот логическая задачка: мы можем дополнить файлы в директории-приёмнике, если папки называются одинаково, но если они отличаются, то папка-исходник будет помещена внутрь приёмника. Как скопировать файлы из /source в /target с помощью cp без wildcards?
Чтобы обойти это вредное ограничение мы используем неочевидное решение:
Те кто хорошо знаком с DOS и Linux уже всё поняли: внутри каждой папки есть 2 невидимые папки «.» и «..», являющиеся псевдопапками-ссылками на текущую и вышестоящие директории.
- При копировании cp проверяет существование и пытается создать /target/.
- Такая директория существует и это есть /target
- Файлы из /source скопированы в /target корректно.
Итак, вешаем в жирную рамочку в своей памяти или на стене:
Поведение этой команды однозначно. Всё отработает без ошибок вне зависимости от того миллион у вас файлов или их нет вовсе.
Выводы
Если нужно скопировать все файлы из одной папки в другую, не используем wildcards, вместо них лучше использовать cp в сочетании с точкой в конце папки-источника. Это скопирует все файлы, включая скрытые и не завалится при миллионах файлов или полном отсутствии файлов.
Послесловие
vmspike предложил аналогичный по результату вариант команды:
ВНИМАНИЕ: регистр буквы T имеет значение. Если перепутать, то получите полную белиберду: направление копирования поменяется.
Благодарности:
Источник