Копирование в два места одновременно

Я не очень хорошо разбираюсь в bash ... я бы хотел скопировать содержимое DVD-R на два разных жестких диска как можно быстрее.

(также приветствуются решения на основе пользовательского интерфейса)

Спасибо!

7
задан 17 August 2010 в 02:17

3 ответа

Одно из решений на основе оболочки - открыть терминал и ввести:

cp -r /location/of/DVD /hard/drive/a &
cp -r /location/of/DVD /hard/drive/b

Команда cp предназначена для копирования файлов, а переключатель -r копирует все файлы рекурсивно. Вы должны ввести каталог, в котором находится ваш DVD (обычно /media/dvd или аналогичный), и второе место в жестком диске, где вы хотите файлы (т.е. /home/diego/mydvd). & отправляет первый процесс в фоновый режим, и вы можете сразу же ввести и выполнить вторую команду.

0
ответ дан 17 August 2010 в 02:17

Как упоминалось в комментарии Ли Ло к ответу qbi, оптические приводы (CD, DVD и т. Д.) - самый медленный тип привода, поэтому вы хотите минимизировать объем чтения, который вы делаете с DVD-привода. Очевидным решением будет скопировать данные с DVD-диска в одно место на жестком диске, а затем скопировать их из этого места на другой жесткий диск.

cp -r /media/cdrom /location1
cp -r /location1 /location2
0
ответ дан 17 August 2010 в 02:17

Узкое место, скорее всего, заключается в чтении с 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
0
ответ дан 17 August 2010 в 02:17

Другие вопросы по тегам:

Похожие вопросы: