Я ищу автоматическое копирование содержимого диска при вставке в указанный каталог. Это не DVD или CD, просто один файл данных на каждом диске, возможно ли сделать это с помощью сценария оболочки?
Да, действительно! Я заинтересовался, так же, как и некоторые царапины на голове, много зубов и волос. Вот оно:
#! /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 после копирования данных. Если он не извлекается и остается подключенным, я думаю, что он попытается снова скопировать один и тот же диск. Кроме того, это говорит само за себя. Наслаждайтесь : -)
Если вы хотите отреагировать, когда вставляете 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
Оба главных ответа сработали отлично.
Fabricator4 : Я изменил строку eject cdrom
на eject /dev/sr0/
, так как она была для меня ошибочной. Вероятно, потому что я решил запустить это с живого USB на моем резервном компьютере, вместо моей обычной установки.
cp /Documnets/letter.txt kbd> /Pictures/letter.txt kbd>