Как автоматически скопировать содержимое CD при вставке?

Я ищу автоматическое копирование содержимого диска при вставке в указанный каталог. Это не DVD или CD, просто один файл данных на каждом диске, возможно ли сделать это с помощью сценария оболочки?

2
задан 8 October 2012 в 19:23

4 ответа

Да, действительно! Я заинтересовался, так же, как и некоторые царапины на голове, много зубов и волос. Вот оно:

#! /bin/bash
# Wait for a CD to be inserted then copy the contents
#
echo "CD copy, press <ctrl>C to exit"
echo "Looking for disk..."
#
# Go into a continuous loop always looking for a new CD
while :
    do
####### Get the mount point of /dev/sr0 out of the mounts file        
        TEST=$(grep /dev/sr0 /proc/self/mounts)
####### If it doesn't exist, loop until it does with 1 second pause
        if [ "$TEST" == "" ]; then
                echo -ne "."
                sleep 1
        else
                echo
############### Got it!  Need to strip the mount point out of the string
                TEST2=${TEST:9}
                set $TEST2
                TEST=$1
############### Do the copy process for the disk we found
                echo "Copying from $TEST"
                cp -vr $TEST/* ~/junk/
############### Eject the CD with suitable pauses to avoid any buffer problems
                sleep 1
                eject cdrom
                sleep 2
        fi
######## Still looping! Go back and wait for another CD!
    done
exit()

Вы заметите, что скрипт предполагает, что cdrom - / dev / sr0, поэтому, если это не тот случай, вам нужно его изменить. Используйте команду blkid, чтобы узнать, как называется ваше оптическое устройство. Сценарий копирует все в вашу домашнюю папку в подкаталог, называемый нежелательной, и этот каталог должен существовать , прежде чем запускать сценарий.

Я обнаружил, что скрипт аккуратно извлекает cd / dvd после копирования данных. Если он не извлекается и остается подключенным, я думаю, что он попытается снова скопировать один и тот же диск. Кроме того, это говорит само за себя. Наслаждайтесь : -)

0
ответ дан 8 October 2012 в 19:23

Если вы хотите отреагировать, когда вставляете DVD / CD, вам нужно написать правило udev.

Вы можете найти инструкции здесь

. Посмотрите раздел Запуск программ для определенных событий.

Использование правил udev в /etc/udev/rules.d.

Сначала определите устройство, выполнив tail -f /var/log/dmesg. Затем удалите плагин, чтобы идентифицировать ваше устройство.

Затем используйте udevinfo на устройстве, чтобы найти подробную информацию о (вы будете использовать при написании своего правила)

Добавить новый файл правил /etc/udev/rules.d/90_CD_DVD.rules Используя информацию из udevinfo для фильтрации только на вашем устройстве. В поле action вашего нового правила напишите команду cp /path-to-your-cd-dvd /path-to-save-your-files

0
ответ дан 8 October 2012 в 19:23

Оба главных ответа сработали отлично.

Fabricator4 : Я изменил строку eject cdrom на eject /dev/sr0/, так как она была для меня ошибочной. Вероятно, потому что я решил запустить это с живого USB на моем резервном компьютере, вместо моей обычной установки.

0
ответ дан 8 October 2012 в 19:23

cp sourcefile destination_file

cp /Documnets/letter.txt /Pictures/letter.txt

0
ответ дан 8 October 2012 в 19:23

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

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