Я не очень хорошо разбираюсь в bash ... я бы хотел скопировать содержимое DVD-R на два разных жестких диска как можно быстрее.
(также приветствуются решения на основе пользовательского интерфейса)
Спасибо!
Одно из решений на основе оболочки - открыть терминал и ввести:
cp -r /location/of/DVD /hard/drive/a &
cp -r /location/of/DVD /hard/drive/b
Команда cp
предназначена для копирования файлов, а переключатель -r
копирует все файлы рекурсивно. Вы должны ввести каталог, в котором находится ваш DVD (обычно /media/dvd
или аналогичный), и второе место в жестком диске, где вы хотите файлы (т.е. /home/diego/mydvd
). &
отправляет первый процесс в фоновый режим, и вы можете сразу же ввести и выполнить вторую команду.
Как упоминалось в комментарии Ли Ло к ответу qbi, оптические приводы (CD, DVD и т. Д.) - самый медленный тип привода, поэтому вы хотите минимизировать объем чтения, который вы делаете с DVD-привода. Очевидным решением будет скопировать данные с DVD-диска в одно место на жестком диске, а затем скопировать их из этого места на другой жесткий диск.
cp -r /media/cdrom /location1
cp -r /location1 /location2
Узкое место, скорее всего, заключается в чтении с DVD-привода, поэтому мы должны убедиться, что читаем его только один раз или читаем дважды, но с достаточно близкими интервалами, чтобы данные все еще оставались в кеше. Последнее звучит сложно, поэтому давайте перейдем к первому.
1111 Нам нужен где-то там дубликатор. Если мы ограничимся базовыми командами оболочки, единственным выбором будетtee
. Таким образом, нам нужно преобразовать вход (дерево файлов) в поток, передать поток в tee
и преобразовать каждый выходной поток обратно в дерево файлов. Инструмент для этого - архиватор. Сжатие чего-то, что останется в памяти, является пустой тратой, поэтому давайте просто воспользуемся tar
.
Каналы (command0 | command1
) позволяют нам передавать выходные данные команды в другие команды. Нам нужно передать выходные данные tee
в две другие команды, поэтому пригодится другая конструкция bash: command1 >(command2)
создает канал, который передается в command1
в качестве своей первой команды, а не становится стандартный вывод command2
. (Смотрите подстановку процесса в руководстве по bash.)
Вот команда (не проверено):
mkdir /media/disk0/copy_of_dvd /media/disk1/copy_of_dvd
cd /media/cdrom
tar cf - . | tee >(tar xf - -C /media/disk0/copy_of_dvd) | tar xf - -C /media/disk1/copy_of_dvd